2017-08-09 47 views
0

假设我想实现并使用下面的ts模块。这只是一个基本的验证是验证一个名字:实现这个自定义打字稿模块的正确方法是什么?

export namespace Validators 
{ 
    export class NameValidator 
    { 
     constructor() 
     { 
     } 

     FirstNameIsValid(firstName: string) 
     { 
      return firstName.length < 20; 
     } 
    } 
} 

什么是对我来说,实现上述模块的正确方法是什么?另外,从我的ng2组件中引用和使用这个模块的正确方法是什么?下面的import语句不起作用:

import { Validators.NameValidator } from './modules/name-validator'; 
+0

不起作用 – user8334943

+0

可能的重复https://stackoverflow.com/a/34864779/7176268。它的要点是有角度的,不需要名称空间,因为我们使用模块加载器来只导入需要的模块。 – LLai

+0

@LLai - 有趣的一点。我又看了一个基于angular.io提供的示例创建的ng2组件,它没有名称空间,所以它看起来像在ng2中不使用名称空间。感谢您的洞察力! – user8334943

回答

0

我在过去做了它的方式是创建一个模块

module Formatter{ 

    export class SsnFormatter { 
     ssn: string; 
     constructor(unformattedSsn: string) { 
      this.ssn = unformattedSsn.replace(/(\d{3})(\d{2})(\d{4})/, '$1-$2-$3'); 
     } 
     formatSsn() { 
      return this.ssn;  
     } 
    } 
} 

然后内其他打字稿文件称其为

let f = new Formatter.SsnFormatter('111111111'); 
console.log(f); 

只要你的类在同一模块名称空间内,你应该能够直接引用它。

这是从一个角度1.x项目,但TS或角的版本应该不重要,这是模块之间的打字稿通信。

相关问题