Angenommen, ich habe eine Komponente:
@Component({
selector: 'MyContainer',
template: `
<div class="container">
<!-- some html skipped -->
<ng-content></ng-content>
<span *ngIf="????">Display this if ng-content is empty!</span>
<!-- some html skipped -->
</div>`
})
export class MyContainer {
}
Nun möchte ich einige Standardinhalte anzeigen, wenn <ng-content>
diese Komponente leer ist. Gibt es eine einfache Möglichkeit, dies zu tun, ohne direkt auf das DOM zuzugreifen?
Lösung des Problems
Schließen Sie ng-content
ein HTML-Element wie a ein div
, um einen lokalen Verweis darauf zu erhalten, und binden Sie den ngIf
Ausdruck dann an ref.children.length == 0
:
template: `<div #ref><ng-content></ng-content></div>
<span *ngIf="! ref.children.length">
Display this if ng-content is empty!
</span>`
Aktualisiert für Angular 12; alte Logik (" ref.nativeElement.childNodes.length
") gibt Fehler, wie nativeElement
es undefined
heutzutage der Fall ist.
Keine Kommentare:
Kommentar veröffentlichen