如何使用angular2定义模块/命名空间?

时间:2016-01-26 12:15:17

标签: angular

我已经完成了类型脚本的相当多的工作,我们总是使用模块来创建命名空间。我发现这并不适合角度。对于需要做什么特殊工作的任何帮助表示赞赏。

使用下面的代码,我希望能够在导入中引用代码作为MyApplication.Contacts.ContactComponent。

module MyApplication.Contacts {
    @Component({
        templateUrl: '/Home/Contact'
    })

    export class ContactComponent {

    }
}

2 个答案:

答案 0 :(得分:2)

使用ES6模块你不再需要命名空间了 - angular2文档非常倾向于这种风格,所以我认为这将是用于编写angular2应用程序的 方法。缺点是你需要一个编译步骤,但是当你使用ES7装饰器时,这似乎没问题。

// my-application/contacts.ts
import { Component } from 'angular2/core';

@Component({
    templateUrl: '/Home/Contact'
})
export class ContactComponent {

}

// later in my-application/app.ts
import { bootstrap } from 'angular2/platform/browser';
import { ContactComponent } from './contacts';

// Do something with ContactComponent ...

顺便说一下:TypeScript现在有namespace关键字取代module,以便更好地区分内部和外部模块。

答案 1 :(得分:0)

示例中的模块是内部TS模块。您看到的大多数示例都使用外部TS模块(查看Handbook对它们的评价。外部模块也看起来像ES6 Modules,因此使用它们的另一个好处。

要组织外部模块,您只需使用文件夹,正确配置的加载器(如SystemJS)就会知道在哪里查找它们。如果您想保留您的结构,只需创建MyApplication/Contacts.ts文件,然后您可以像这样导入它:

import {ContactComponent} from 'MyApplication/Contacts';