Ich bemühe mich, Material Design Lite Komponente mit dynamisch hinzugefügten Elementen über * ngFor arbeiten zu lassen. Ich verstehe, dass ich componentHandler.upgradeElement aufrufen muss, aber wo setze ich diesen Anruf? Ich habe versucht this und this Direktiven, aber sie scheinen nicht zu funktionieren. Insbesondere brauche ich MDL-Menü auf jedem Element meines Arrays. Irgendwelche Vorschläge zu sehen?Angular2 ngFür Elemente mit Material Design Lite
6
A
Antwort
1
TLDR; Sie müssen componentHandler.upgradeElement aufrufen, nachdem die Elemente in das DOM eingefügt wurden. Ein Ansatz, den ich in der Vergangenheit verwendet habe, wird im folgenden Beispiel beschrieben.
EDIT Wenn Sie eine deklarative Lösung this approach here scheinen wie ein ziemlich gutes, aber ich habe es nicht selbst verwendet.
habe ich einen Dienst, der das Material Lite componentHandler
import { Injectable } from '@angular/core';
export interface ComponentHandler {
upgradeDom();
}
declare var componentHandler: ComponentHandler;
@Injectable()
export class MaterialService {
handler: ComponentHandler;
constructor() {
this.handler = componentHandler;
}
// render on next tick
render() {
setTimeout(() => { this.handler.upgradeDom(); }, 0);
}
}
Dann Sie die Render-Funktion des Service rufen wickelt, nachdem die Komponente, die Elemente in das DOM injiziert hat. In Ihrem Fall ist dies nach den *ngFor
Dies ist ein sehr konstruiertes Beispiel ist aber zeigt, „wo“ machen nennen
import { Component, OnInit } from '@angular/core';
import { DataService } from 'services/data.service';
import { MaterialService } from 'services/material.service';
@Component({
selector: 'app-thing',
templateUrl: `
<ul>
<li *ngFor="let item of data">
{{data}}
</li>
</ul>
`
})
export class ThingComponent implements OnInit {
data: string[]
constructor(
private service: DataService,
private material: MaterialService
) { }
ngOnInit() {
this.service.getData()
.subscribe(data => {
this.data = data;
this.material.render();
});
}
}
Verwandte Themen
- 1. Angular2 Router im Zusammenspiel mit Material Design Lite
- 2. Material Design Lite Navigation
- 3. Laden von Material-Design-Lite
- 4. Material Design Lite Font Ausgabe
- 5. Material Design Lite Styling Eingabefelder
- 6. Material Design Lite nicht mit Turbolinks Arbeits
- 7. Material Design Lite Raster mit Tabellen
- 8. Verwenden von Material Design Lite mit React
- 9. Material Design Lite Alle Elemente geladen JS Callback
- 10. Material Design Lite Menü dynamisch ng-repeat
- 11. Material Design Lite dynamisch Farbe ändern
- 12. Material Design Lite Stretch vertikal mdl-cards
- 13. Material Design Lite - Suchleiste in Nav-Header
- 14. JavaScript zu Toggle Material Design Lite Switch
- 15. ng-wenn Material entfernt Design lite Kräuselungeffekt
- 16. Ändern der Design-Farben von Material Design Lite in scss
- 17. Alternative zu ID-Selektoren mit Tooltip in Material Design Lite
- 18. Ausgewählter Text angular2 mit * ngFür
- 19. Wie formatieren Sie Selectbox mit Material Design Lite?
- 20. ui-Router arbeitet nicht mit Material Design lite
- 21. Problem Anzeige von Hamburger-Menü mit Material-Design-Lite
- 22. Bestätigen Sie die Passwort-Validierung mit Material Design Lite Fehlern
- 23. Wie wird Modal Popup mit Material Design Lite verwendet?
- 24. Schaffung eines Schiebers mit editierbaren Nummernfeld in Material Design lite
- 25. Was ist der Unterschied zwischen Material Design Lite und Angular Material Design?
- 26. Update Material Lite Kontrollkästchen mit Angular 2
- 27. Material Design Lite Icons fehlen, wenn in Angular
- 28. PyCharm - Material Design Lite - Auto Suggest funktioniert nicht
- 29. Entfernen von Material Design Lite Schaltfläche Hover-Effekt
- 30. Material Design Lite Hamburger Menü nicht in der Kopfzeile zentriert