我最近了解到,我们必须在 Angular 销毁组件之前取消订阅,否则可能会导致内存泄漏。
我还知道我们可以获得订阅的引用,并通过调用该订阅的取消订阅方法来订阅。例如
private sub: any;
ngOnInit() {
this.sub = this.route.params.subscribe(params => {
let id = +params['id']; // (+) converts string 'id' to a number
this.service.getHero(id).then(hero => this.hero = hero);
});
}
ngOnDestroy() {
this.sub.unsubscribe();
}
Run Code Online (Sandbox Code Playgroud)
在 HTTP 调用的情况下也有必要吗?如果是,那么这种情况下的最佳实践是什么。
例如,我们通常有这样的东西通过 HTTP 发布一些数据
let body = JSON.stringify({ name });
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
this.http.post(this.heroesUrl, body, options)
.map(this.extractData)
.subscribe((data) => {
//do something with data
})
.catch(this.handleError);
Run Code Online (Sandbox Code Playgroud)
下面的方法可行吗?这是在 HTTP …
我正在使用 PrimeNG (1.0.0-beta.5) PanelMenu 和 Angular RC 2.0.0-rc.1 版本
以下是 PrimeNG 面板菜单的示例代码。当我单击Project或Welcome链接时,它会刷新我的整个页面,然后加载相应的组件。
<p-panelMenu id="panelMenu">
<div>
<div><a data-icon="fa-file-o"><span>Report</span></a></div>
<div>
<ul>
<li><a data-icon="fa-plus"><span>New</span></a>
<ul>
<li><a [routerLink]="['Project']" (click)="mobileMenuActive = false">Project</a></li>
<li><a [routerLink]="['Welcome']" (click)="mobileMenuActive = false">Welcome</a></li>
</ul>
</li>
<li><a [routerLink]="['Project']">Project</a></li>
<li><a><span>Quit</span></a></li>
</ul>
</div>
</div>
</p-panelMenu>
Run Code Online (Sandbox Code Playgroud)
每当我使用如下所示的 nav 元素时,它都会正确调用相应的组件,而无需刷新页面。
<nav>
<div class='container-fluid'>
<ul class='nav navbar-nav'>
<li><a [routerLink]="['Welcome']">Home</a></li>
<li><a [routerLink]="['Project']">Product List</a></li>
</ul>
</div>
</nav>
Run Code Online (Sandbox Code Playgroud)
知道我在 primeNG 面板菜单实现中缺少什么吗?
干杯圣基特
我在我的项目中使用angular-cli,我想使用全局图像 - 我的网站徽标图像.
据我所知,public项目根目录(angular-cli创建)的目录是公共资产 - 这似乎是放置我的形象的好地方(如果我错了请纠正我).
但是,当我尝试在我的<img src="/public/book4u-logo.svg" />标签中找到该图像时,我得到404.原因是,当然,我的项目根目录是src目录而不是项目根目录.
那么,我应该如何进入该目录?或者我应该将我的图像放在另一个目录中?
我的项目树(我删除不必要的后缀):
.
??? angular-cli-build.js
??? angular-cli.json
??? package.json
??? public
? ??? book4u-logo.svg
? ??? hero-image-default.jpg
??? src
? ??? app
? ? ??? bfy.component.html
? ? ??? bfy.component.scss
? ? ??? bfy.component.ts
? ? ??? environment.ts
? ??? favicon.ico
? ??? index.html
? ??? main.ts
? ??? system-config.ts
? ??? tsconfig.json
? ??? typings.d.ts
??? tslint.json
??? typings.json
Run Code Online (Sandbox Code Playgroud)
该 …
我有两个文本字段,必须从两个文本字段中获取数据并使用LocalStorage存储它.所以这里是我已经实现的代码,但它不起作用你能告诉我解决它.
在page1.html中
<ion-input [(ngModel)]="hour" type="number" ></ion-input>
<ion-input [(ngModel)]="min" type="number" ></ion-input>
<button clear (click)="setTime(hours.value,min.value)" item-right >settime</button>
Run Code Online (Sandbox Code Playgroud)
在pag1.ts
export class Page1 {
public hour;
public min;
public local:Storage;
constructor(public nav: NavController, translate:TranslateService) {}
setTime(hour, min){
if(hour<24 && hour>0 && min>0 && min<61){
this.local.set('hour',JSON.stringify(hour));
this.local.set('min',JSON.stringify(min));
}
else{
console.log("OUTOF LIMIT TIME EXCEPTION the values are "+hour+min);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在控制台日志上,它显示
[Object Object]在最后
并且也请告诉得到 从localStorage的.提前致谢 :-)