Angular 2コンポーネントにはauthbox.component.ts
があります
import {Component} from 'angular2/core';
import {COMMON_DIRECTIVES} from 'angular2/common';
import {Credentials} from './credentials'
@Component({
selector: 'authbox',
template: `<div>
<div class="login-panel" *NgIf="!IsLogged">
<input type="text" *NgModel="credentials.name" />
<input type="password" *NgModel="credentials.password" />
<button type="button" (click)="signIn(credentials)">→| Sign In</button>
</div>
<div class="logged-panel" *NgIf="IsLogged">
<span>{nickname}</span> <button type="button" (click)="signOut()">|→ Sign out</button>
</div>
</div>`,
directives: [COMMON_DIRECTIVES]
})
export class AuthBoxComponent {
private _isLogged: boolean;
get IsLogged(): boolean {
return this._isLogged
}
set IsLogged(value: boolean) {
this._isLogged = value;
}
public credentials: Credentials;
}
ブラウザーでエラーが発生しました"既知のネイティブプロパティではないため 'NgModel'にバインドできません"および"NgIf 'ではないため' NgIf 'にバインドできません既知のネイティブプロパティ"。
ベータ8を使用しています。
*NgModel
の代わりに*ngIf
と*NgIf
ではなく[(ngModel)]
を使用してみてください
<span>{{nickname}}</span> <button type="button" (click)="signOut()">|→ Sign out</button>
export class AuthBoxComponent {
nickname="guest";
...
}
一般的に、can't bind to xxx since it isn't a known native property
エラーは、属性ディレクティブを使用しようとしたとき、またはプロパティバインディングを設定しようとしたときにHTMLにタイプミスがあるときに発生します。
一般的な例は、*
または#
またはlet
name__を見逃した場合、またはAngular組み込み構造ディレクティブでin
name__の代わりにof
name__を使用した場合です。
<div ngIf="..." // should be *ngIf
<div ngFor="..." // should be *ngFor="..."
<div *ngFor="let item in items" // should be "let item of items"
<div *ngFor="item of items" // should be "let item of items"
スペルミスや間違ったケースでも問題が発生します::
<div *ngFer="..."
<div *NgFor="..."
もう1つの理由は、DOM要素またはコンポーネントに存在しないプロパティを指定した場合です。
<div [prop1]="..." // prop1 isn't a valid DOM property for a div
<my-comp [answr]="..." // typo, should be [answer]
組み込みのAngularディレクティブを持つタイプミスの場合、タイプミスはどの組み込みディレクティブセレクターにも一致しないため、AngularはDOM要素のプロパティ(div
name__上記の例では)タイプミスがあります。 div
name__にはネイティブのngIf
name__またはngFer
name__またはprop1
DOMプロパティがないため、これは失敗します。
-
(プロパティではなく)属性の場合、属性バインディングを使用する必要があります。たとえば、height
name__のsvg
name__属性の場合:<svg [attr.height]="myHeightProp">