2016-01-26 23 views
0

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

通过下面的代码,我希望能够将引用中的代码引用为MyApplication.Contacts.ContactComponent。

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

    export class ContactComponent { 

    } 
} 

回答

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 ... 

顺便说一句:打字稿现在有namespace关键字替换module更好地能够区分内部和外部模块。

0

您示例中的模块是内部TS模块。您看到的大多数示例都使用外部TS模块(请查看Handbook要说些什么)。外部模块也看起来像ES6 Modules,所以这是使用它们的另一个好处。

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

import {ContactComponent} from 'MyApplication/Contacts';