2017-05-09 3 views
0

나는 제네릭 함수를 재사용하고 있기 때문에 한 곳에서 가져 와서 여러 가지 구성 요소로 가져 오기만하면됩니다. 내가 Angular 2에서 쉽게 할 수있는 일인가요? 예를 들어각도 2 : 공유 함수 불러 오기

: 나는 순서에 넣어 것

handleResponse(message) { 
    let toast = this.toastCtrl.create({ 
     message: message, 
     duration: 3000, 
     position: 'top' 
    }); 
    toast.present(); 
} 

이 기능을 가져 호출 할 수 있도록?

+0

[TypeScript static classes] (http://stackoverflow.com/questions/13212521/typescript-static-classes) 가능한 복제본 –

+0

보통 공유 구성 요소를 만들고이 클래스에 * shared *'functions'을 넣으므로 공유 구성 요소를 확장하는 다른 구성 요소를 쉽게 사용할 수 있습니다. * 다른 구성 요소에 * 공유 * 구성 요소를 주입 할 수도 있습니다. – developer033

답변

0

클래스를 사용하여이 작업을 수행 할 수 있습니다. 이 작업을 수행하는 가장 좋은 방법은 static 멤버가있는 클래스를 만들어 클래스를 생성하지 않고 해당 속성에 액세스 할 수 있도록하는 것입니다. 이것은 대개 자체 파일에서 수행됩니다.

예 : 정적 멤버가 public해야한다는

import { Utils } from 'path/to/utils'; 

... 

let banana = Utils.handleResponse(thing); 

주 (그리고해야 :

export class Utils { 

    public static handleResponse(): returnType {...} 

    public static doAThing(): anotherType {...} 

} 

... 그리고는 정적 메서드 호출, 정상으로 당신의 Utils 클래스를 가져옵니다 선언되지 않은 멤버는 기본적으로 public 임).

+0

유틸리티 클래스에'ViewController'와 같은 것을 가져와야한다면이 기능이 작동할까요? 만약 그렇다면'constructor() {} '을 사용하지 않고 어떻게 선언 할 수 있습니까? –

+0

Angular로 무엇인가 주입해야한다면, 불행하게도 생성자에 * 필요합니다. 이것은 Angular 컴파일러에서 종속성 주입/토큰이 작동하는 방법의 기초입니다. 유틸리티 메서드를 서비스 자체에 추가하는 것이 좋습니다. 여러 서비스가 메소드를 필요로하는 경우, 메소드를 사용하여 기본 클래스를 작성하고 해당 서비스가 해당 기본 클래스를 확장하도록 할 수 있습니다 ('extends' 및 정적 메소드 없음) – joh04667