Привязка хостов в Angular2
Рассмотрим этот дочерний компонент:
@Component({
selector: 'mySelector',
template: `<ion-spinner [ngIf]="ngif"></ion-spinner>`
})
export class MyDirective {
ngif: boolean;
constructor() {}
@Input() serverWaiting:boolean = true;
@HostBinding('ngIf')
ngOnChanges() {
this.ngif = !this.serverWaiting ? true : null;
}
Шаблон хост-компонента:
<mySelector [serverWaiting]></mySelector>
Компонент хоста:
@Component({
templateUrl: 'hostComp.html',
directives: [myDirective]
})
export class HostComp {
serverWaiting = true;
}
Тем не менее, Spinner не отображается. Есть идеи, что я делаю не так?
Источники: https://angular.io/docs/ts/latest/api/common/index/NgIf-directive.html
1 ответ
Решение
@HostBinding('ngIf')
Декоратор должен быть перед свойством со значением, которое должно быть связано.
export class MyDirective {
constructor() {}
@HostBinding('ngIf')
ngif: boolean;
@Input() serverWaiting:boolean = true;
ngOnChanges() {
this.ngif = !this.serverWaiting ? true : null;
}
}
Этот код не выглядит действительным
<mySelector [serverWaiting]></mySelector>
[serverWaiting]
указывает привязку свойства, но не привязывает значение. Это не назначает true
в случае, если вы ожидаете этого. Вам нужно
<mySelector [serverWaiting]="true"></mySelector>