Tôi đang cố gắng làm cho thành phần Material Design Lite hoạt động với các yếu tố được thêm động thông qua * ngFor. Tôi hiểu rằng tôi cần phải gọi componentHandler.upgradeElement, nhưng tôi phải thực hiện cuộc gọi này ở đâu? Tôi đã thử các chỉ thị this và this nhưng chúng dường như không hoạt động. Cụ thể, tôi cần menu mdl trên mỗi mục trong mảng của tôi. Bất kỳ đề xuất về nơi để xem xét?Angular2 ngFor yếu tố có Material Design Lite
6
A
Trả lời
1
TLDR; Bạn cần gọi componentHandler.upgradeElement sau khi các phần tử đã được đưa vào DOM. Cách tiếp cận mà tôi đã sử dụng trong quá khứ được mô tả trong ví dụ bên dưới.
EDIT Nếu bạn muốn một giải pháp khai báo this approach here có vẻ như là một giải pháp khá hay, nhưng tôi chưa tự sử dụng nó.
Tôi tạo ra một dịch vụ mà kết thúc tốt đẹp 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);
}
}
Sau đó, bạn gọi làm cho chức năng của dịch vụ sau khi thành phần đã tiêm các yếu tố vào DOM. Trong trường hợp của bạn này là sau khi *ngFor
Đây là một ví dụ rất giả tạo nhưng chứng tỏ "ở đâu" để gọi làm
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();
});
}
}
Các vấn đề liên quan
- 1. Material Design Lite + React - Các vấn đề với Tooltips
- 2. Ngăn kéo điều hướng mở trên swipe (Material Design Lite)
- 3. Lưới thiết kế Material Design Lite với các bảng
- 4. material design lite - biểu tượng ngăn kéo thay đổi màu
- 5. Angular2 lồng ngFor
- 6. tạo thanh trượt với trường số có thể chỉnh sửa trong thiết kế material design lite
- 7. Chọn bootstrap vs material design
- 8. Biểu mẫu động angular2 với ngModel của các yếu tố ngFor
- 9. Material Design Transparent ActionBar
- 10. Material Design progressdialog
- 11. Ngăn kéo điều hướng Material Design Lite (MDL) ở bên phải
- 12. Sử dụng Angular2 ngFor index
- 13. Angular2 Material Design alpha.9-3 có '404 không tìm thấy' cho @ góc/tài liệu
- 14. Màu biểu tượng Material Design
- 15. Android TimePickerDialog material design color
- 16. angular2 Không thể có nhiều mẫu bindings trên một yếu tố
- 17. Các chỉ thị bố cục có được hỗ trợ bởi Angular 2 Material Design Components không?
- 18. ngControl với ngFor trong Angular2
- 19. * ngFor trên đối tượng angular2
- 20. Looping sử dụng ngFor và bỏ qua thứ n yếu tố
- 21. thiết kế material design android với AppCompatActivity
- 22. Animate Resize View trong Material Design
- 23. Thiết kế material design Android AppCompat
- 24. Thiết kế material design Pattern Drawer
- 25. tab thiết kế material design android 5.0
- 26. * ngFor và * ngNếu cùng nhau, Angular2, Ionic2
- 27. Angular2 ngFor - skip nếu không có giá trị
- 28. * ngFor trên đầu ra ng-template không có gì Angular2
- 29. Bảng mở rộng trong Google Material design android
- 30. AngularJs Thiết kế material design Bố cục RTL