2016-10-08 10 views
1

私はAngularJS 2を初めて使用しました。これは初めてTSlintでコンパイルしようとしています。私はTour of Heroesチュートリアルをやって、以下のような部分があり、TSlintはobject access via string literals is disallowed. 文字列リテラルによる角2のアクセスは禁止されています

ngOnInit(): void { 
    this.route.params.forEach((params: Params) => { 
     let id = +params['id']; 
     this.projectService.getProject(id) 
     .then(project => this.project = project); 
    }); 
    } 

を言ってコンパイルしたいdoesntのどの私は問題を理解し、私は迷ってしまいました場合、それが解決になるかどうかわからないんだけどそれ。私を手伝ってくれますか?

私の他のコード

getProjects(): Promise<Project[]> { 
     return this.http.get(`${this.configuration.Server}projects${this.configuration.ApiUrl}`) 
        .toPromise() 
        .then(response => response.json()) 
        .catch(this.handleError); 
    } 

    getProject(ident: number): Promise<Project> { 
     return this.getProjects() 
      .then(projects => projects.find(project => project.id === id)); 
    } 
+0

であるため、これを行うことができます。あなたのgetProjectメソッドを表示します。 – micronyks

+0

'params ['id']'を 'params.id'に変更しようとしましたか?または、TSLintの設定を再構成することもできます。 – qqilihq

+0

はい、存在しません – Leukonoe

答えて

0

それは変数に文字列リテラルを割り当てることで固定することができます。 []よりこの番号linkを使用すると、この問題を解決する複数のオプションがあります。

+0

は一切役に立たない – Leukonoe

1

私はちょうどこのルールを取り除くでしょう。文字列でプロパティにアクセスする場合があります。 tslint.jsonファイルを見ると、プロパティ"no-string-literal"が表示されます。それを偽に変更するだけです。

ルールを保持したい場合は、idになるようにparamsに入力するだけです。 Params typeは単純に{[key: string]: any}

route.params.subscribe((params: {id: string}) =>{ 
    let id = +params.id; 
}) 
関連する問題