Привязка хостов в 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>
Другие вопросы по тегам