Angular2无法读取属性' push'未定义的

时间:2016-11-01 13:25:29

标签: angular typescript

目前,我可以拨打服务并填写一张包含记录的表格;记录具有选定的属性,每个行的复选框都会切换。

该表下面是一个按钮;当我点击按钮时,我想循环遍历表并创建一个新数组,其中的条目选择了property == true。

我似乎无法正确初始化selecterecords数组。

Record.ts

export class Record {
    id: string;
    firstname: string;
    lastname: string;
    salary: string;
    selected : boolean;
}

表component.ts

export class TableComponent implements OnInit {
    records: Record[];
    selectedrecords: Record[];

    constructor(
        private router: Router,
        private recordService: RecordService) {}

    getRecords(): void {
        this.recordService.getRecords().then(records => this.records = records);
    }

    ngOnInit(): void {
        this.getRecords();
    }

    createselectedRecords() {
        for (let rec of this.records) {
            if (rec.selected) {
                this.selectedrecords.push(rec);
            }
            console.log(this.selectedrecords);
        }
    }
}

记录service.ts

@Injectable()
export class RecordService {
    getRecords(): Promise<Record[]> {
        return Promise.resolve(RECORDS);
    }

    getRecord(id: string): Promise<Record> {
        return this.getRecords()
            .then(records => records.find(record => record.id === id));
    }
}

2 个答案:

答案 0 :(得分:4)

通过--enable-shared您只需设置此属性的类型,以便TypeScript可以在您做错任何事情时发出警告。

要实际初始化属性,可以使用空数组:

selectedrecords: Record[]

答案 1 :(得分:0)

您需要在使用变量之前进行初始化。

@media only screen and (max-width:800px){
  .fb-page {
    display: none;
  }
}