angular - Angular 组件中的@Inject 是什么意思?
问题描述
组件的构造函数中有这个:
export class MyDialogComponent implements OnInit, OnDestroy {
constructor(
@Inject(MAT_DIALOG_DATA) public data: any
) {}
}
这是什么意思:@Inject(MAT_DIALOG_DATA)
?
解决方案
0) @Inject 的定义
Angular Inject装饰器定义取自 rangle.io:
@注入()
@Inject() 是一种手动机制,用于让 Angular 知道必须注入参数。
1) MAT_DIALOG_DATA 的定义
从角度材料对话框 api:
MAT_DIALOG_DATA
可用于访问传入对话框的数据的注入令牌。
2) 材料文档中@Inject(MAT_DIALOG_DATA) 的用法
在对话框文档中,您可以找到如何与对话框组件共享数据。
如果要与对话框共享数据,可以使用 data 选项将信息传递给对话框组件。
let dialogRef = dialog.open(YourDialog, {
data: { name: 'austin' },
});
要访问对话框组件中的数据,您必须使用 MAT_DIALOG_DATA 注入令牌:
import {Component, Inject} from '@angular/core';
import {MAT_DIALOG_DATA} from '@angular/material/dialog';
@Component({
selector: 'your-dialog',
template: 'passed in {{ data.name }}',
})
export class YourDialog {
constructor(@Inject(MAT_DIALOG_DATA) public data: any) { }
}
3) 完整的 stackblitz 示例
此外,材料文档在 stackblitz 上提供了一个简单的完整工作示例。
推荐阅读
- ansible - 我们是否有 Ansible 命令来运行用户交互式 shell 脚本而不使用 playbook?
- android - 如何将自定义查询段传递给 RoomDb 中的 @query
- c++ - 如何检查上次收到的保持活动数据包
- arrays - 如何从python中的.dat文件将特定列引入缓冲区或字节数组
- node.js - 如果我的 package.json 中没有使用插入符号(^)或波浪号(~),我还需要 package-lock.json 吗?
- kotlin - Kotlin 中的 TeamCity 配置 - 子项目中的构建 id 冲突
- react-native - React Native NavigationDrawer - 我如何在 createDrawerNavigation 中启动警报
- codeigniter - 插入批处理只插入最后输入的ID?
- java - 我们可以在 spark sql 中触发传统的连接查询吗
- javascript - 使用 node.js 和 AJAX 请求将 Javascript 函数移动到后端