Betrachten Sie dieses Bild Kind-Komponente:Hostbinding ngIf in 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;
}
Die Hostkomponente der Vorlage:
<mySelector [serverWaiting]></mySelector>
Die Host-Komponente:
@Component({
templateUrl: 'hostComp.html',
directives: [myDirective]
})
export class HostComp {
serverWaiting = true;
}
Doch der Spinner ist nicht gezeigt. Irgendeine Idee, was ich falsch mache?
Quellen: https://angular.io/docs/ts/latest/api/common/index/NgIf-directive.html
Bei der Verwendung von '[ngIf] = "ngIf"', erhalte ich ein 'myDirective - Inline-Vorlage: 3: 12 ORIGINAL AUSNAHME: Kein Anbieter für TemplateRef'!. Mit '* ngIf' wird der Fehler behoben, aber der Spinner wird immer angezeigt. – nottinhill
Das liegt wahrscheinlich daran, dass die Benennung einer Eigenschaft 'ngIf' eine schlechte Idee ist. Bitte verwenden Sie stattdessen einen anderen Namen. –
Hi .. funktioniert jetzt sogar mit der Benennung der Direktive instance member 'ngIf'. Problem war Negation vor 'this.serverWaiting', das funktioniert:' this.ngif = this.serverWaiting? wahr: null; '. – nottinhill