【发布时间】:2020-10-16 04:48:44
【问题描述】:
我有一个通过 @Input() 装饰器接收数据的子组件。我的目标是使用来自父组件数据的数组创建一个新对象。我收到了数据,但由于某种原因我不能对这些数据使用map() 方法,这是我的 TS 组件部分:
import { Component, OnInit, Input } from '@angular/core';
import {Group} from "@models/group.model";
@Component({
selector: 'app-group-admins',
templateUrl: './group-admins.component.html',
styleUrls: ['./group-admins.component.css']
})
export class GroupAdminsComponent implements OnInit {
admins: Array<Group> = [];
new_admins = []
@Input('group')
set _group(value) {
this.admins = value;
this.new_admins = value.users.map(a => ({id: a.user, permissions: a.permissions}));
}
constructor() { }
ngOnInit() {
this.new_admins = this.admins.users.map(a => ({id: a.user, permissions: a.permissions}));
}
}
和组模型仅供参考:
import {GroupUser} from "@models/group-user.model";
export class Group {
id: string;
group_name: string;
type: string;
avatar?: string;
header?: string;
address?: string;
date?: string;
city?: string;
about?: string;
verify_status?: string;
site?: string;
phone?: string;
email?: string;
web_site?: string;
industry?: true;
directions_list?: string;
users: Array<GroupUser>
}
我也不能在 ngOnInit 部分做到这一点。我确定我从@Input() 收到数据,因为我可以console.log 它,任何帮助将不胜感激。
【问题讨论】:
-
您确实在接收数据,否则会显示
cannot read property 'users' of undefined。你应该检查users是否真的设置在你收到的数据中
标签: angular