角度类型错误:无法使用装饰器读取未定义的属性"map@Input



我有一个通过@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。此外,admins字段的类型设置为Array<Group>,但@Input()您似乎只期望一个Group对象,而不是数组,即使您确实将其分配给this.admins

所以有两种可能性

  1. .users属性未在绑定到组件的group中设置
  2. group输入接收一个数组,usersArray上不存在,所以它出错。

对于这两种情况,您都必须查看,但很可能您不想将组数组传递给组件,而只想传递单个组,这意味着您应该查看父模板来修复它

最新更新