在 Angular 2 中订阅 ActivatedRoute 参数不会更新视图模板
Subscribing to ActivatedRoute Params in Angular 2 does not update view templates
我不确定为什么更改检测在这里不起作用。我已经尝试了一些东西,包括 setTimeout。我正在使用 RC5。基本上我想根据 URL 中的参数更改内容。应该很简单吧?
thanks.ts
import { Component } from '@angular/core';
import { Card } from '../../components/card/card';
import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'sd-thanks',
styleUrls: ['thanks.css'],
directives: [Card],
templateUrl: 'thanks.html'
})
export class Thanks {
params: any;
coming: any;
constructor(public route: ActivatedRoute) {
this.params = this.route.params.subscribe(
params => {
this.coming = params['coming'];
console.log(this.coming); // this consoles the correct true/false value
}
);
}
}
thanks.html
<card>
<div *ngIf="coming" class="card-content">
<span class="card-title">We can't wait to see you!</span>
</div>
<div *ngIf="!coming" class="card-content">
<span class="card-title">We will certainly miss you!</span>
</div>
</card>
Params 只能是字符串,因为它们来自 URL
如果改成
this.coming = params['coming'] && params['coming'].toLowerCase() === 'true';
应该可以。
我不确定为什么更改检测在这里不起作用。我已经尝试了一些东西,包括 setTimeout。我正在使用 RC5。基本上我想根据 URL 中的参数更改内容。应该很简单吧?
thanks.ts
import { Component } from '@angular/core';
import { Card } from '../../components/card/card';
import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'sd-thanks',
styleUrls: ['thanks.css'],
directives: [Card],
templateUrl: 'thanks.html'
})
export class Thanks {
params: any;
coming: any;
constructor(public route: ActivatedRoute) {
this.params = this.route.params.subscribe(
params => {
this.coming = params['coming'];
console.log(this.coming); // this consoles the correct true/false value
}
);
}
}
thanks.html
<card>
<div *ngIf="coming" class="card-content">
<span class="card-title">We can't wait to see you!</span>
</div>
<div *ngIf="!coming" class="card-content">
<span class="card-title">We will certainly miss you!</span>
</div>
</card>
Params 只能是字符串,因为它们来自 URL
如果改成
this.coming = params['coming'] && params['coming'].toLowerCase() === 'true';
应该可以。