我有一个在模型上执行任务的指令,但是在运行outcommented循环之前我在等待值为true时遇到问题,这应该决定指令是否应该有一个状态首次启动指令时的true
或false
值。
我能想到的唯一解决办法就是使用ngDoCheck
,但是一旦this.model
完全具有其价值,我就无法找到杀死此方法的方法解决。
在我完成启动后,我不希望它运行。我也尝试过使用ngOnInit
和AfterViewInit
但这些显然对此事没有帮助。
那么我怎样才能在执行任务之前等待this.model
获取其值?
import {Directive, ElementRef, Renderer} from '@angular/core';
@Directive({
selector: '[checkAll]',
inputs: [
'model'
]
})
export class CheckAllDirective {
constructor(private _elementRef: ElementRef, private _renderer: Renderer) {
// TODO: Need to wait for this.model to set before performing this
// for (let checkbox of this.model) {
//
// if (checkbox.isChecked) {
// this.isAllChecked = true;
// }
// else {
// this.isAllChecked = false;
// }
// }
this.eventHandler = _renderer.listen(_elementRef.nativeElement, ('ontouchstart' in window ? 'touchend' : 'click'), (e) => {
this.isAllChecked = !this.isAllChecked;
for (let checkbox of this.model) {
checkbox.isChecked = this.isAllChecked;
}
});
}
}
答案 0 :(得分:4)
ngOnInit在第一次调用ngOnChanges
后调用。
export class CheckAllDirective {
constructor(private _elementRef: ElementRef, private _renderer: Renderer) {
}
ngOnInit() {
for (let checkbox of this.model) {
if (checkbox.isChecked) {
this.isAllChecked = true;
}
else {
this.isAllChecked = false;
}
}
}
}