2017-08-09 49 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或角的版本應該不重要,這是模塊之間的打字稿通信。

相關問題