tôi đã tích hợp thành công kiễu góc 2 (Alpha 44) với D3.js:Sử dụng D3.js với góc 2
<html>
<head>
<title>Angular 2 QuickStart</title>
<script src="../node_modules/systemjs/dist/system.src.js"></script>
<script src="../node_modules/angular2/bundles/angular2.dev.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js" charset="utf-8"></script>
<script>
System.config({packages: {'app': {defaultExtension: 'js'}}});
System.import('app/app');
</script>
</head>
<body>
<my-app>Loading...</my-app>
</body>
</html>
app.js:
/// <reference path="./../../typings/tsd.d.ts" />
import {Component, bootstrap, ElementRef} from 'angular2/angular2';
@Component({
selector: 'my-app',
template: '<h1>D3.js Integrated if background is yellow</h1>',
providers: [ElementRef]
})
class AppComponent {
elementRef: ElementRef;
constructor(elementRef: ElementRef) {
this.elementRef = elementRef;
}
afterViewInit(){
console.log("afterViewInit() called");
d3.select(this.elementRef.nativeElement).select("h1").style("background-color", "yellow");
}
}
bootstrap(AppComponent);
Tất cả mọi thứ đang làm việc tốt. Nhưng tài liệu Angular 2 cho ElementRef nêu rõ:
Sử dụng API này làm phương sách cuối cùng khi truy cập trực tiếp vào DOM là cần thiết. Sử dụng templating và dữ liệu ràng buộc được cung cấp bởi Angular thay thế. Ngoài ra, bạn hãy xem {@link Renderer} cung cấp API có thể được sử dụng một cách an toàn ngay cả khi truy cập trực tiếp vào các yếu tố gốc không được hỗ trợ. Dựa vào truy cập DOM trực tiếp tạo ra sự ghép nối chặt chẽ giữa ứng dụng của bạn và các lớp dựng hình mà sẽ làm cho nó không thể tách rời hai ứng dụng và triển khai ứng dụng của bạn thành một nhân viên web.
Bây giờ câu hỏi đặt ra cách tích hợp D3.js với API của trình kết xuất?
Đây có phải là trong bất kỳ sự giúp đỡ? http://www.ng-newsletter.com/posts/d3-on-angular.html – urosjarc
Tôi cũng đang cố gắng để D3 làm việc với góc cạnh 2. Trong ví dụ trên, tôi có thể thấy rằng bạn tham khảo tập lệnh d3 trong bạn index.html, nhưng tôi không thể thấy cách bạn nắm giữ biến d3 trong app.js? – user2915962
@ user2915962 - npm install d3, đảm bảo chạy postinstall và d3.d.ts được tạo bởi tsd, sau đó 'import * as d3 từ 'd3/d3';' – drewmoore