GOOGLE ADS

Montag, 18. April 2022

Wie überprüfe ich, ob <ng-content> leer ist? (in Angular 2+ bis jetzt)

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

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...