首页 > 解决方案 > 从 HTML 中调用静态 TypeScript 函数

问题描述

我想在 Angular 7 中从我的 HTML 中调用一个静态类方法/函数。这个函数不在一个单独的通用类文件中,component.ts而是在一个单独的通用类文件message.ts中。控制台上显示错误:

TypeError: Cannot read property 'msg1' of undefined.

模板:

<div>
  {{ Message.msg1({ 'x': 'abc', 'y': 'def' }) }}
</div>

message.ts

import { Injectable } from '@angular/core';

    @Injectable({
        providedIn: 'root'
    })
    export class Message {

        constructor() { }

        public static msg1 (items: []): string {
          // some code
        }
    }

我想要的可能吗?如果是,我怎样才能在 HTML 范围内获取消息文件(以及 Message 类)?

标签: htmlangulartypescriptfunction

解决方案


静态方法可以在上访问,而不是 DI 注入的实例。如果您希望该模板代码正常工作,则必须执行例如

import { Message } from ".../message";

@Component(...)
class Whatever {
  Message = Message;

   ...
}

使类在模板范围内作为 Message 可用。

也就是说,尚不清楚为什么该方法是静态的,或者仅具有静态方法的可注入服务的意义是什么。


推荐阅读