Tôi vừa mới bắt đầu với Angular2 và tôi gặp vấn đề mà tôi không thể hiểu được.Thuộc tính '' không tồn tại trên loại 'Đối tượng'. Đăng ký có thể theo dõi
Tôi có một số dữ liệu giả tạo như vậy:
export const WORKFLOW_DATA: Object =
{
"testDataArray" : [
{ key: "1", name: "Don Meow", source: "cat1.png" },
{ key: "2", parent: "1", name: "Roquefort", source: "cat2.png" },
{ key: "3", parent: "1", name: "Toulouse", source: "cat3.png" },
{ key: "4", parent: "3", name: "Peppo", source: "cat4.png" },
{ key: "5", parent: "3", name: "Alonzo", source: "cat5.png" },
{ key: "6", parent: "2", name: "Berlioz", source: "cat6.png" }
]
};
mà sau đó được nhập khẩu trong một dịch vụ và "quan sát"
import { Injectable } from '@angular/core';
import { WORKFLOW_DATA } from './../mock-data/workflow'
import {Observable} from "rxjs";
@Injectable()
export class ApiService {
constructor() { }
getWorkflowForEditor(): Observable<Object>
{
return Observable.of(WORKFLOW_DATA);
}
}
sau đó tôi có một thành phần trong đó, các nhà xây dựng:
constructor(private apiService: ApiService)
{
this.apiService.getWorkflowForEditor().subscribe(WORKFLOW_DATA => {
console.log(WORKFLOW_DATA);
console.log(WORKFLOW_DATA.testDataArray);
});
}
Bàn điều khiển đầu tiên ghi nhật ký đối tượng kiểu đối tượng chứa thuộc tính testDataArray.
Các console.log thứ hai, kết quả trong một lỗi tại thời gian biên dịch:
Property 'testDataArray' does not exist on type 'Object'.
Trong khi vẫn đăng nhập một mảng của các đối tượng [Object, Object, ..] như dự định.
Tôi thực sự không hiểu tại sao, tôi chắc chắn tôi đang làm điều gì sai, tôi rất thích một lời giải thích.
Cảm ơn bạn đã được trợ giúp!
Như bạn có thể thấy, câu trả lời khác đề nghị sử dụng bất kỳ, cá nhân tôi cảm thấy như sử dụng một giao diện được một cách chính xác, mặc dù một chút tiết cho một cái gì đó đơn giản như thế này. Giao diện có thực hành tốt nhất với Angular2 không? – 0plus1
Hệ thống kiểu có sẵn để giúp bạn đặc biệt khi ứng dụng phát triển. Bạn không cần phải sử dụng bất kỳ của nó nếu bạn không muốn - nó không có hiệu lực trên javascript cuối cùng. Tôi (và tôi nghĩ rằng hầu hết những người khác) thích nó bởi vì một trình soạn thảo thông minh cung cấp tự động hoàn thành và cảnh báo bạn về việc phạm sai lầm. Nếu đây là mã của tôi, tôi có thể tạo một kiểu cho các bản ghi - '{key: string, parent?: String ..}' và một cho bộ sưu tập có chứa loại bản ghi - '{testDataArray: recordType []. ..' hoặc một cái gì đó như thế. –