angular - 将 Angular Material Table 中的行数据显示到另一个组件中
问题描述
我有两个组件。第一个组件包含 Angular Material Table,而第二个组件将显示在表中单击的行的详细信息。
第一个组件:
const ELEMENT_DATA: GoodsList[] = [
{initial: 'J', eta: '20-01-2020', src: 'IN'},
{initial: 'N', eta: '20-01-2020', src: 'ON''}
]
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8">
<ng-container matColumnDef="ordered">
<th mat-header-cell *matHeaderCellDef> Initial </th>
<td mat-cell *matCellDef="let element"> {{element.initial}} </td>
</ng-container>
<ng-container matColumnDef="eta">
<th mat-header-cell *matHeaderCellDef> ETA </th>
<td mat-cell *matCellDef="let element"> {{element.eta}} </td>
</ng-container>
<ng-container matColumnDef="srt">
<th mat-header-cell *matHeaderCellDef> SRC </th>
<td mat-cell *matCellDef="let element"> {{element.src}} </td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;" (click)="getRecord(row)"></tr>
</table>
现在函数 getRecord() 正在按预期工作。
getRecord(row: GoodsList){
console.log(row);
}
数据是在行变量中捕获的,但是现在如何根据我单击的内容将其传递给另一个组件?
解决方案
这是一个使用服务的例子(这个例子是关于用户管理的):
- 在您的 UserService 中,声明一个 Subject 类型的属性用户。
user: Subject<User> = new Subject();
- 将其暴露在可观察的外部:
user$: Observable<User>
...
this.user$ = this.user.asObservable();
- 登录功能将更新私人用户主题。
login(userName: string, password: string) {
//...
this.user.next(new User("First name", "Last name"));
}
- 在您的 UserComponent 中,订阅 UserServive 的 user$ observable 以更新视图。
this.userService.user$.subscribe((userData) => {this.user = userData;});
- 在您看来,只需使用字符串插值:
{{user?.firstName}} {{user?.lastName}}
这是工作的插件:http://plnkr.co/edit/qUR0spZL9hgZkBe8PHw4?p= preview
推荐阅读
- typescript - 有什么区别?或 / 在 http 请求中
- angular - Angular 材质自定义输入 - 从外部调用 setValidator 时移除内部验证器
- arrays - if(temp_similarity[k]==similarity[l]): ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
- java - 启动、更新 AWS IOT 作业的权限
- vb6 - VB6:如何强制光标进入文本框但释放按钮按下
- c++ - 如何在不使用套接字的情况下在 C++ 中发送 POST 请求
- android - 分支机构未跟踪 Google 广告 ID
- python - 如何在 selenium python 中递归获取类详细信息
- vba - Word VBA 宏中的内存泄漏
- java - Intent.getSerializableExtra(obj)在设置Alarm时在BroadcastReceiver的onReceive中返回null