[解決済み] Angular 2のコンポーネントでTypeScriptを使ってモデルクラスを宣言するにはどうしたらいいですか?
質問
私はAngular 2とTypeScriptの初心者で、ベストプラクティスに従おうとしています。
単純なJavaScriptのモデル({ })を使う代わりに、TypeScriptのクラスを作ろうとしています。
しかし、Angular 2はそれを好まないようです。
私のコードは
import { Component, Input } from "@angular/core";
@Component({
selector: "testWidget",
template: "<div>This is a test and {{model.param1}} is my param.</div>"
})
export class testWidget {
constructor(private model: Model) {}
}
class Model {
param1: string;
}
というように使っています。
import { testWidget} from "lib/testWidget";
@Component({
selector: "myComponent",
template: "<testWidget></testWidget>",
directives: [testWidget]
})
Angularからエラーが出ています。
EXCEPTION: testWidgetのすべてのパラメータを解決できません。(?).
ということで、Modelはまだ定義されていないんだなぁ・・・と思いました。一番上に移動させちゃおうかな~。
ただし、今度は例外が発生しました。
元の例外: Model のプロバイダがありません!
どうすればこれを達成できますか?
編集:皆さん、回答ありがとうございました。 正しい道に導いてくれました。
これをコンストラクタに注入するためには、コンポーネント上のプロバイダに追加する必要がありますね。
これはうまくいくように見えます。
import { Component, Input } from "@angular/core";
class Model {
param1: string;
}
@Component({
selector: "testWidget",
template: "<div>This is a test and {{model.param1}} is my param.</div>",
providers: [Model]
})
export class testWidget {
constructor(private model: Model) {}
}
どのように解決するのですか?
これを試してみる。
モデルを
model.ts
:
export class Model {
param1: string;
}
それをあなたのコンポーネントにインポートしてください。そうすることで、他のコンポーネントで使えるようになるという利点があります。
Import { Model } from './model';
コンポーネントで初期化する。
export class testWidget {
public model: Model;
constructor(){
this.model = new Model();
this.model.param1 = "your string value here";
}
}
htmlの中で適切にアクセスする。
@Component({
selector: "testWidget",
template: "<div>This is a test and {{model.param1}} is my param.</div>"
})
によるコメントを答えに加えたいと思います。 パット・ミリアッチョ というのも、最新のツールや技術に適応することが重要だからです。
<ブロッククオート
もしあなたが
angular-cli
を呼び出すことができます。
ng g class model
を呼び出すと、それを生成してくれます。モデルは、あなたが望むどんな名前にも置き換えられます。
関連
-
[解決済み] Angular 2の@ViewChildアノテーションがundefinedを返す
-
[解決済み] Angular 2の「コンポーネント」は既知の要素ではありません。
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?
-
[解決済み] Angular:*ngClassを使った条件付きクラス
-
[解決済み] コンポーネントテンプレートで要素を選択するには?
-
[解決済み] Angularの@Directiveと@Componentの比較
-
[解決済み] typescriptのクラスコンストラクタ型?
-
[解決済み] タイプスクリプト React: コンポーネントのプロパティタイプにアクセスする
-
[解決済み] つのクラスに2つのクラスが割り当てられている場合、そのクラスが優先されます。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン