1
こんにちは、私はTypesctiptとAngular2を初めて使用しています。コンパイラは「wordListId」は存在しないことを知らせるいる理由 私は理解していない:Typescript - プロパティがありませんが、すでに存在しています
プロパティ「wordListId」タイプに存在しません「IWordList」。
とイベント対コード自動補完が存在することを示します。 Image
WordlistsdataService.ts
import { Injectable, OnInit } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { IWordList } from './IWordlist';
import 'rxjs/add/operator/map';
@Injectable()
export class WordlistsdataService implements OnInit {
private url :string = 'src/app/wordlists/wordlists.json';
constructor(private http : Http) { }
getWordLists() : Observable<IWordList[]> {
return this.http.get(this.url)
.map((response : Response) => <IWordList[]>response.json())
}
getWordList(id : number) : Observable<IWordList>{
return this.getWordLists().map((wordLists : IWordList[]) => wordLists.find(p => p.wordListId === id));
}
ngOnInit(){
}
}
IWordList.ts(インターフェース)
export interface IWordList{
wordListId : number,
title : string,
image : string,
words : string,
description : string,
}
wordlists.json
[
{
"wordListId" : 1,
"title" : "Animals",
"image" : "/src/app/images/wordlists/animals_background.jpg",
"words" : "cat,elephant,cow,duck",
"description" : "sdadasd"
},
{
"id" : 2,
"title" : "Jobs",
"image" : "/src/app/images/wordlists/jobs_background.jpg",
"words" : "engineer,farmer,artist,programmer",
"description" : "sdadasd"
}
]
'OnInit'を実装しているサービスはありますか?私は何もしないと思う。 –
これが原因であるかどうかわかりませんが、JSONの2番目のオブジェクトには本当に 'wordListId'というプロパティがありません。また、 '.map((wordLists:IWordList [])=> wordLists.find(p => p.wordListId === id))'をチェックしてください。 'map'コールバックの最初の引数は配列全体の配列ではなく、配列の現在の値でなければなりません。これについては、参考までにチェックしてください:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map?v=example –
そのようなコールバックパラメータで型を指定しないでください安全ではありません。 –