angular - 创建一个可以在 Angular 4 模板中使用的全局函数

标签 angular typescript angular2-template

我想创建一个可以在 Angular 模板中使用的可重用函数。我创建了一个函数:

 export function stringSplit(string : string, separator : string = '/') : any {
    return string.split(separator);
}

我试过像这样添加到模板中:

<p> stringSplit('hello/user') </p>

但是我收到了这个错误:

ERROR TypeError: _co.stringSplit is not a function

我不确定我们如何在 Angular 中创建和使用全局函数。

我们可以用 Angular 执行这个操作吗?

在这种情况下最好的解决方案是什么?

最佳答案

答案是您不应该。依赖注入(inject)是 Angular 提供的一个强大的工具,其唯一目的是在不维护全局范围的情况下跨组件共享功能。你真正应该做的是创建一个服务,向它添加一个方法,将你的服务注入(inject)任何需要它的组件,然后在那里调用它。

根据您的问题判断,最好有一个管道来执行您需要的操作。管道用于操作任何模板内的数据(使该函数对于属于声明或导入管道的模块的组件的所有模板几乎是全局的)。你可以这样写:

@Pipe({name: 'splitString'})
export class SplitString implements PipeTransform {
  transform(value: string, separator: string): string[] {
     return value.split(separator);   
  }
}

在你的 html 中:

<p>{{ myString | splitString : ',' }} </p>

阅读更多关于管道的信息 here .

关于angular - 创建一个可以在 Angular 4 模板中使用的全局函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47410452/

相关文章:

javascript - Typescript - 从 ForEach() 内重复调用函数会导致未定义

javascript - 以 Angular 将 map 转换为json对象

javascript - 如何将 Material 选择和标签并排放在同一行

node.js - require ('child_process' 中的错误)函数未定义 - TypeScript

javascript - 使用 typescript 在 react 中传播 Prop

angular - 在 Angular2 中从 HTML 调用组件方法

css - 如何在 angular2 单个组件中访问全局 SASS mixin 函数?

forms - Angular2 ngForm 不工作

Angular2 将纯文本转换为 url( anchor 链接)的方法

angular - *ngFor 不适用于 Angular 2