【问题标题】:Angular 2: Importing shared functionsAngular 2:导入共享函数
【发布时间】:2017-10-08 06:57:39
【问题描述】:

我发现自己重用了泛型函数,我更愿意将它们放在一个地方,然后简单地将它们导入我的各种组件中。这是我在 Angular 2 中可以轻松完成的事情吗?

例如:

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

为了能够导入这个函数并调用它,我应该把它放在哪里?

【问题讨论】:

  • TypeScript static classes的可能重复
  • 通常我会创建一个共享组件并将shared functions放在这个类中,这样我可以很容易地在其他组件中使用扩展共享组件甚至注入 共享​​> component 在另一个组件中。

标签: angular service components


【解决方案1】:

您可以使用类来执行此操作。最好的方法是创建一个包含static 成员的类,这样您就可以在不构造类的情况下访问它的属性。这通常在它自己的文件中完成。

例子:

export class Utils {

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

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

}

...然后像往常一样导入你的 Utils 类,然后静态调用它的方法:

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

...

let banana = Utils.handleResponse(thing);

注意静态成员应该是public(并且需要声明,即使未声明的成员默认是public)。

【讨论】:

  • 如果我需要将ViewController 之类的东西导入实用程序类,这会起作用吗?如果是,我如何在不使用constructor(){} 的情况下声明它
  • 如果 Angular 需要注入某些东西,不幸的是,它需要在构造函数中。这是依赖注入/令牌在 Angular 编译器中如何工作的基础。我可以建议将实用程序方法添加到服务本身吗?如果多个服务需要这些方法,您可以使用这些方法编写一个基类,并让这些服务扩展该基类(使用extends 并且没有静态方法)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-07
  • 1970-01-01
  • 1970-01-01
  • 2017-04-15
  • 2017-03-30
  • 2017-06-12
  • 2016-08-23
相关资源
最近更新 更多