Cập nhật cho (2017-03-13) :
Tất cả đề cập đến moduleId loại bỏ. Sách nấu ăn "thành phần tương đối" đã bị xóa
Chúng tôi đã thêm một plugin SystemJS mới (systemjs-angular-loader.js) vào cấu hình SystemJS được đề xuất của chúng tôi. Plugin này tự động chuyển đổi các đường dẫn "tương đối thành phần" trong templateUrl và styleUrls thành "đường dẫn tuyệt đối" cho bạn.
Chúng tôi khuyến khích bạn chỉ viết các đường dẫn liên quan đến thành phần. Đó là hình thức URL duy nhất được thảo luận trong các tài liệu này. Bạn không còn cần phải viết @Component({ moduleId: module.id })
, bạn cũng không nên.
Nguồn: https://angular.io/docs/ts/latest/guide/change-log.html
Định nghĩa:
moduleId?: string
moduleId
tham số bên trong @Component
chú thích có một string
giá trị là;
" Id mô-đun của mô-đun có chứa thành phần. "
Sử dụng CommonJS : module.id
,
Sử dụng SystemJS: __moduleName
Lý do sử dụngmoduleId
:
moduleId
được sử dụng để giải quyết các đường dẫn tương đối cho biểu định kiểu và mẫu của bạn như được nói trong tài liệu.
Id mô-đun của mô-đun có chứa thành phần. Cần thiết để có thể giải quyết các url tương đối cho các mẫu và kiểu. Trong Dart, điều này có thể được xác định tự động và không cần phải thiết lập. Trong CommonJS, điều này luôn có thể được đặt thành module.id.
ref (cũ): https://angular.io/docs/js/latest/api/core/index/ComponentMetadata- class.html
chúng ta có thể chỉ định vị trí của các tệp mẫu và kiểu liên quan đến tệp lớp thành phần chỉ bằng cách đặt thuộc tính moduleId của siêu dữ liệu @Component
ref: https://angular.io/docs/ts/latest/cookbook/component-relative-paths.html
Ví dụ sử dụng:
Cấu trúc thư mục:
RootFolder
├── index.html
├── config.js
├── app
│ ├── components
│ │ ├── my.component.ts
│ │ ├── my.component.css
│ │ ├── my.component.html
Không có module.id :
@Component({
selector: 'my-component',
templateUrl: 'app/components/my.component.html', <- Starts from base path
styleUrls: ['app/components/my.component.css'] <- Starts from base path
})
Với module.id :
tsconfig.json:
{
"compilerOptions": {
"module": "commonjs", <- need to change this if you want to use module.id property
...
@Component({
moduleId: module.id,
selector: 'my-component',
templateUrl: 'my.component.html', <- relative to the components current path
styleUrls: ['my.component.css'] <- relative to the components current path
})