1.json文件里面不能添加注释//或者/**/
今天想当然的用//注释了一条json文件中的语句,结果编译时,运行npm install出现错误,分析了一下错误信息
发现是注释惹的祸。
JSON结构:
名称/值对的集合:key : value样式;
值的有序列表:Array;
在JSON的文档中说明只要是不符合上面两种结构的都不支持
2.node_modules里面都是编译后的文件,而组件直接编译后,compile文件夹下面就是和node_mudules里同类型的文件。本地编译测试时,可以直接替换,但是要注意替换后,需要把package.josn 文件中相关组件的依赖语句删除,否则npm install的时候还是会从仓库中获取组件,达不到替换的目的了。
3.微服务创建相关
4.javascript如何去除对象的某个属性?
答:var obj = {key1: 'value1', key2: 'value2'};
delete obj.key1;
5.编译失败报错
Metadata version mismatch for module ............./src/main/iui/node_modules/@ng-bootstrap/ng-bootstrap/accordion/accordion-config.d.ts, found version 4, expected 3
这个依赖版本应该升级了,导致版本不匹配,研究报错日志总能找到解决办法。
6.js的数组处理图解:
7.今天菜单又出问题了,打不开,F12定位以后发现一个依赖文件没有更新,折腾了大半天,又是依赖的问题!
8.获取当前url的问题:
如果是一个页面有子窗口和父窗口:
window.location.pathname---获取子窗口url的路径
window.location.href---获取子窗口整个 URL 为字符串
等等一系列方法
top.location.pathname---获取父窗口url的路径
top.location.href---获取父窗口整个 URL 为字符串
或者
window.parent.location.pathname---获取父窗口url的路径
window.parent.location.href---获取父窗口整个 URL 为字符串
9.写入和读取浏览器的localstorage
参考地址:https://www.cnblogs.com/st-leslie/p/5617130.html
写入3种方法:
if(!window.localStorage){
alert("浏览器不支持localstorage");
return false;
}else{
var storage=window.localStorage;
//写入a字段
storage["a"]=1;
//写入b字段
storage.a=1;
//写入c字段
storage.setItem("c",3);
console.log(typeof storage["a"]);
console.log(typeof storage["b"]);
console.log(typeof storage["c"]);
}
读取3种方法:
if(!window.localStorage){
alert("浏览器不支持localstorage");
}else{
var storage=window.localStorage;
//写入a字段
storage["a"]=1;
//写入b字段
storage.a=1;
//写入c字段
storage.setItem("c",3);
console.log(typeof storage["a"]);
console.log(typeof storage["b"]);
console.log(typeof storage["c"]);
//第一种方法读取
var a=storage.a;
console.log(a);
//第二种方法读取
var b=storage["b"];
console.log(b);
//第三种方法读取
var c=storage.getItem("c");
console.log(c);
}
10.今天在angular2一个模块中调用框架的一个接口函数,但是调用时ts自动检测老是报错,检查不到这个函数,因为本地文件并找不到这个函数,只有等编译后,部署到服务器上,才能调用框架的函数,但是现在自动检测报错,本地编译不能通过,这时的一个解决办法就是在ts文件最顶端添加如下代码即可:
declare var top: any;这时调用就不会检测报错了。
top.frameWork
11.当几个模块相互跳转时,对应的菜单可能不刷新数据,这时可能和缓存有关,也许菜单配置了缓存项。
12.关于回调函数,回调函数传递给另一个函数时,传递的仅仅是函数名,
即我们可以像使用变量一样使用函数,作为另一个函数的参数,在另一个函数中作为返回结果,在另一个函数中调用它。当我们作为参数传递一个回调函数给另一个函数时,我们只传递了这个函数的定义,并没有在参数中执行它。见下例:
function logStuff (userData) {
}
function getInput (options, callback) {
callback (options);
}
getInput ({name:"Rich", speciality:"JavaScript"}, logStuff);
13.input单选框radio一定要加name属性才起作用!如何让浏览器知道这是道单选题呢,radio通过同名也就是同name来实现,单选框的 name
属性是来定义同一组radio的,这两个radio不在同一组,如果你不写name,是没办法使用单选的。
14.angular2中使用radio的坑,ngmodle绑定的冲突,待补。
15.
问题:Angular 2+ and Observables: Can't bind to 'ngModel' since it isn't a known property of 'select'
解决:
>= RC.5
The FormsModule
needs to be imported to make ngModel
available
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [BrowserModule /* or CommonModule */,
FormsModule, ReactiveFormsModule],
...
)}
class SomeModule {}
<= RC.4
In config.js
add
'@angular/forms': {
main: 'bundles/forms.umd.js',
defaultExtension: 'js'
},
in main.ts
add
import {provideForms, disableDeprecatedForms} from '@angular/forms';
bootstrap(App, [disableDeprecatedForms(),provideForms()])
16.
margin相对的元素在不同的情况下有所不同:
如果父元素在子元素的margin的同向上有padding或border的话,子元素的margin相对于父元素,否则相对于父元素以外的元素。
17.css定位问题
利用input和ul li 写了一个地理位置组件,在上面3个input按inline-block排列,首先会遇到一个空格的问题,3个input之间除了margin的配置,其实还有一个空格,代码形如:
网上大概有几种不同的解决方案,最后为了方便采用这种:
//第一个input
<div class="divInput">
<input />
<div >
<ul>
<li>{{item}}</li>
</ul>
</div>
</div><div class="divInput" > //第二个input(两个div紧挨着写即可去掉空格)
<input />
<div >
<ul >
<li >{{item}}</li>
</ul>
</div>
</div>
<div class="divInput"> //input父块要设置为position:relative,不可省略,这样下拉列表的就与input同宽了。
<input />
<div > //为了显示下拉框不影响布局,ul的div块设置position:absolute,还有就是宽度问题,怎么保证和input同宽,width:100%
需要注意,这个100%需要相对于input父块,所以要把input父块设置为position:relative;
<ul>
<li>{{item}}</li>
</ul>
</div>
</div><div class="divInput" > //第二个input(两个div紧挨着写即可去掉空格)
<input />
<div >
<ul >
<li >{{item}}</li>
</ul>
</div>
</div>