Non riesco a rendere il componente Material Design Lite compatibile con elementi aggiunti dinamicamente tramite * ngFor. Capisco che ho bisogno di chiamare componentHandler.upgradeElement, ma dove metto questa chiamata? Stavo cercando le direttive this e this ma non sembrano funzionare. In particolare, ho bisogno di mdl-menu su ogni elemento del mio array. Qualche suggerimento su dove guardare?Angular2 ngPer elementi con Material Design Lite
6
A
risposta
1
TLDR; È necessario chiamare componentHandler.upgradeElement dopo che gli elementi sono stati iniettati nel DOM. Un approccio che ho usato in passato è descritto nell'esempio seguente.
EDIT Se si desidera una soluzione dichiarativa this approach here sembrare una abbastanza buona, ma non ho usato io.
ho creato un servizio che avvolge il materiale 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);
}
}
Poi si chiama la funzione di rendering del servizio dopo che il componente ha iniettato gli elementi nel DOM. Nel tuo caso questo è dopo il *ngFor
Questo è un esempio molto artificiosa, ma dimostra "dove" per chiamare il rendering
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();
});
}
}
Problemi correlati
- 1. Material Design Lite navigation
- 2. Griglia Lite Design Material con tabelle
- 3. Uso di Material Design Lite con React
- 4. Material Design Lite + React - Problemi con i tooltip
- 5. Come utilizzare Modal Pop up con Material Design Lite?
- 6. Material Design Lite (MDL) Cassetto di navigazione sul lato destro
- 7. Aprire il cassetto di navigazione su scorrimento (Material Design Lite)
- 8. ngControllo con ngPer in Angular2
- 9. Material design progressdialog
- 10. Material design layout_scrollFlags significati
- 11. creazione di un cursore con campo del numero modificabile in material design lite
- 12. Angular2 ngModel contro ngPer variabili
- 13. popupI difetti di bave con Material Design
- 14. Scelta bootstrap vs material design
- 15. Qual è il modo corretto per rendere una tabella Material Design Lite 100% larghezza?
- 16. crash - material design android 5.0
- 17. Material Design: Nav cassetto Larghezza
- 18. Material Design Lite JS non applicato al file html caricato dinamicamente
- 19. Non posso usare * ngIF dentro * ngPer: angular2
- 20. Nascondi/mostra singoli elementi all'interno di ngPer
- 21. Angular2 ngPer i contenuti non riprodotti su Safari
- 22. Cassetto come Google material design per iOS
- 23. Material design Telescopico angolare md-autocomplete
- 24. Material Design Menu hamburger non centrato nell'intestazione
- 25. Come realizzare questo menu popup personalizzato con Material Design Android?
- 26. WebView con una barra degli strumenti comprimibile? (material design)
- 27. Qual è il significato di * in * ngPer in angular2?
- 28. Testo del pulsante Tema utilizzando Angular Material Design
- 29. colore per cento in Android per Material design
- 30. Le direttive di layout sono supportate da Angular 2 Material Design Components?