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-contentein HTML-Element wie a ein div, um einen lokalen Verweis darauf zu erhalten, und binden Sie den ngIfAusdruck 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 nativeElementes undefinedheutzutage der Fall ist.
Keine Kommentare:
Kommentar veröffentlichen