Dieses Mal zeige ich Ihnen, wie Sie Angular bedienen und die dynamische Ladekomponentenmethode zum Implementieren von Dialog verwenden ist ein praktischer Fall. Online-Artikel und Tutorials enden grundsätzlich, wenn die Komponente geladen wird! Gegangen? ! Und es kann nur einen Dialog geben, wenn Sie einen anderen Dialog öffnen möchten, müssen Sie zuerst den aktuell geöffneten Dialog zerstören. Nachdem ich die Implementierung des Materials gesehen habe, mache ich mir selbst die Schuld, dass ich zu dumm bin, um den Quellcode zu verstehen Eine auf meine Art. Die Dialogkomponente ist
Das Ziel der Dialogkomponente: Mehrere Dialoge können gleichzeitig existieren und der angegebene Dialog kann zerstört werden. Nach der Zerstörung verbleiben keine Komponenten im HTML Rückrufe werden bereitgestellt
Es gibt zwei Möglichkeiten, Komponenten dynamisch zu laden. Vor der Angular-Version 4.0 wurde ComponentFactoryResolver zur Implementierung verwendet. Nach 4.0 kann das bequemere ngComponentOutlet zur Implementierung verwendet werden 🎜>
Dynamisches Laden wird durch ComponentFactoryResolver erreichtErstens klären wir die Beziehung zwischen ViewChild, ViewChildren, ElementRef, ViewContainerRef, ViewRef, ComponentRef und ComponentFactoryResolver: ViewChild und ViewChildren
ViewChild wird über Vorlagen referenziertVariable (#) oder Direktive (Direktive) wird verwendet, um Angular Dom abstrakte Klasse . ViewChild kann mit ElementRef oder ViewContainerRef gekapselt werden.
1 |
|
ViewChildren wird verwendet, um QueryList über Vorlagenreferenzvariablen oder -anweisungen zu erhalten, z. B. ein Array, das aus mehreren ViewChilds besteht.
1 |
|
ViewChild kann mit ElementRef oder ViewContainerRef gekapselt werden. Was ist also der Unterschied zwischen ElementRef und ViewContainerRef?
Kapseln Sie es mit ElementRef und rufen Sie dann das native Dom-Element über .nativeElement ab.
1 |
|
1 2 3 4 |
|
ViewRef ist die kleinste UI-Einheit, die ViewContainerRef api betreibt und ViewRef erhält
ComponentRef: Hostansicht (Komponenteninstanzansicht) Durch den Verweis auf die von ViewContainerRef erstellte Komponentenansicht können Sie die Komponenteninformationen abrufen und die Methode der Komponente aufrufen
ComponentFactoryResolverUm ComponentRef zu erhalten, müssen Sie aufrufen createComponent der ViewContainer-Methode, die Methode muss die von ComponentFactoryResolver erstellten Parameter übergeben
1 2 3 4 5 6 7 8 9 10 11 |
|
Spezifische Implementierung
let ComponentFactory,componentRef;
1 2 3 4 5 6 7 8 9 10 |
|
ngComponentOutlet reduziert die Codemenge erheblich, aber nur Versionen nach 4.0 unterstützen spezifische Implementierung
Erstellen Sie einen dynamischen Komponentenspeicherknoten in dialog.component.html
1 |
|
Übergeben Sie die Komponente (nicht den Komponentennamen) und es ist in Ordnung. Warum kann das so sein? einfach!
1 2 3 |
|
Dialogimplementierung
Die Idee der Implementierung ist wie folgt: Erstellen Sie zunächst eine Dialogkomponente, um andere Komponenten zu hosten, und erstellen Sie dann eine Maske für Dialogabdeckung und Animation, erstellen Sie einen Dienst, um die Generierung und Zerstörung des Dialogs zu steuern, aber der Dienst generiert nur den Dialog, die Komponenten im Dialog müssen noch in der Dialogkomponente generiert werden 1 . Schreiben Sie zuerst einen öffentlichen Dienst, um die viewContainerRef der Stammkomponente abzurufen (ich habe versucht, mit ApplicationRef die viewContainerRef der Stammkomponente abzurufen, aber es ist fehlgeschlagen, also habe ich ihn als Dienst geschrieben)
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
3 übergeben um es zu implementieren (ngComponentOutlet wird unten erwähnt. Der Einfachheit halber wird es direkt verwendet. )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
4、这里还创建了一个 DialogRef 的类,用来处理 dialog 关闭后的回调,这样就可以使用 XX.afterClose().subscribe() 来创建回调的方法了
1 2 3 4 5 6 7 8 9 10 11 12 |
|
创建和销毁dialog
1 2 3 4 5 6 7 |
|
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
Das obige ist der detaillierte Inhalt vonSo implementieren Sie Dialog mithilfe der dynamischen Ladekomponentenmethode mit Angular. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!