html - 从 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 类)?
解决方案
静态方法可以在类上访问,而不是 DI 注入的实例。如果您希望该模板代码正常工作,则必须执行例如
import { Message } from ".../message";
@Component(...)
class Whatever {
Message = Message;
...
}
使类在模板范围内作为 Message 可用。
也就是说,尚不清楚为什么该方法是静态的,或者仅具有静态方法的可注入服务的意义是什么。
推荐阅读
- cassandra - 设置和启动 cassandra 进行生产的选项
- amazon-web-services - AWS ECS Fargate 内存使用情况
- mysql - 使用 NOT IN 对具有奇怪的空值的列表的 SQL 查询
- javascript - Discord.js 我无法创建具有特定权限的角色,该角色是静音角色
- java - 在 Spring 应用程序中运行内存中(嵌入式)MongoDB 的集成测试
- amazon-web-services - AWS Cloudfront - 具有 CloudFront 源访问和引用存储桶策略的 S3
- python - Selenium 的 Youtube 网页抓取
- python - 我不知道我该如何解决
- google-apps-script - 希望为任何粘贴的 URL 自动替换 http:// 为 https://
- jwt - Blazored.LocalStorage.ILocalStorageService.GetItemAsync (字符串))