何がおかしいのですか?
import {bootstrap, Component} from 'angular2/angular2'
@Component({
selector: 'conf-talks',
template: `<div *ngFor="talk of talks">
{{talk.title}} by {{talk.speaker}}
<p>{{talk.description}}
</div>`
})
class ConfTalks {
talks = [ {title: 't1', speaker: 'Brian', description: 'talk 1'},
{title: 't2', speaker: 'Julie', description: 'talk 2'}];
}
@Component({
selector: 'my-app',
directives: [ConfTalks],
template: '<conf-talks></conf-talks>'
})
class App {}
bootstrap(App, [])
エラーは
EXCEPTION: Template parse errors:
Can't bind to 'ngFor' since it isn't a known native property
("<div [ERROR ->]*ngFor="talk of talks">
let
の前にtalk
がありませんでした。
<div *ngFor="let talk of talks">
beta.17以降 NgForのような構造化命令の中でローカル変数を宣言するための#...
の使用は非推奨です。代わりにlet
を使用してください。<div *ngFor="#talk of talks">
は<div *ngFor="let talk of talks">
になりました
元の答え:
talk
の前に#
がありませんでした。
<div *ngFor="#talk of talks">
#
ということを忘れがちです。 Angular例外エラーメッセージではなく、次のようにしてください。you forgot that # again
。
OPのエラーにつながる別のタイプミスはin
を使うことです。
<div *ngFor="let talk in talks">
代わりにof
を使用してください。
<div *ngFor="let talk of talks">
Angular 2 Betaバージョン.....で使用されるこのステートメント.
今後は # の代わりに let を使用してください。
let キーワードはローカル変数を宣言するために使用されます
私の場合、それは小文字のf
でした。これがGoogleの最初の結果だからこそ、私はこの答えを共有しています
必ず書いてください *ngFor
angular 7では、次の行を.module.ts
ファイルに追加することでこの問題を修正しました。
import { CommonModule } from '@angular/common'; imports: [CommonModule]
私の場合は、ドキュメントから*ng-for=
をコピーするのを間違えました。
https://angular.io/guide/user-input
間違っていれば訂正してください。しかし、*ng-for=
は*ngFor=
に変更されたようです
私にとっては、長い話を短くするために、誤ってAngular-beta-16にダウングレードしていました。
let ...構文は2.0.0-beta.17でのみ有効です+
あなたがこのバージョンより下の何かでlet構文を試すなら。このエラーが発生します。
Angular-beta-17にアップグレードするか、items構文で#itemを使用してください。
また、これで純粋なTypeScriptを使用しようとしないでください... for
の使用にさらに対応し、*ngFor="const filter of filters"
を使用し、ngFor not not known property errorを取得したいと思います。 constをletに置き換えるだけで動作します。
@ alexander-abakumovがof
をin
に置き換えたことについて述べたように。
私は自分のコンポーネントに " @Input "というアノテーションを付けるのを忘れていました(Doh!)
book-list.component.html (問題のあるコード):
<app-book-item
*ngFor="let book of book$ | async"
[book]="book"> <-- Can't bind to 'book' since it isn't a known property of 'app-book-item'
</app-book-item>
book-item.component.ts :の修正バージョン
import { Component, OnInit, Input } from '@angular/core';
import { Book } from '../model/book';
import { BookService } from '../services/book.service';
@Component({
selector: 'app-book-item',
templateUrl: './book-item.component.html',
styleUrls: ['./book-item.component.css']
})
export class BookItemComponent implements OnInit {
@Input()
public book: Book;
constructor(private bookService: BookService) { }
ngOnInit() {}
}
私の場合、このエラーが発生する* ngForを使用するコンポーネントを含むモジュールは、app.module.tsに含まれていませんでした。 imports配列にそこを含めると、問題が解決しました。