2016-10-12 10 views
0

私はサーバ側レンダリングページを持っています。ウェブページから角度成分の入力値を動的に設定したいと考えています。ウェブページから角度成分の入力値を設定する

<body> 
    <testcmp [testa]="'Blue322'"></testcmp> 
</body> 

http://plnkr.co/edit/YoZOnGWI6R1Urj89tJAZ?p=preview

私は私が唯一のテンプレート(私のplunkrの「TESTB」)からではなく、外部の(「種皮」)からコンポーネントの値を設定することが可能だということに気づきます。

ウェブページから「testa」の値を設定するには、何が必要ですか?

答えて

1

をコードスニペットを使用してください。

コンポーネントをindex.htmlページで直接使用しないでください。アプリケーションをブートストラップする前に行うべきです。

EDIT:あなたは

<testcmp testa="Blue322"></testcmp> 
import {Component, Input, ElementRef} from 'angular2/core'; 
... 
export class TestCmp { 
    testa: string; 

    constructor(public elementRef: ElementRef) { 
    } 

    ngOnInit(){ 
     this.testa = this.elementRef.nativeElement.getAttribute('testa'); 
    } 
} 
+0

角度アプリケーションがindex.htmlページから値を取得する方法はありますか?私のページは、実際にはサーバーからコンテンツが動的に生成されるaspxページです。私はこのページに角型アプリの値を設定できるようにします。 –

+0

アプリケーションでタグを読み取らせるコードを使って答えを編集しますが、これを扱う方法はないと思います。 – dokkis

+0

それは働いた。ありがとう。私はこれを避けました。なぜなら、どこかで入力を使用する方がよいと読んでいましたが、入力を使用することができないのであれば、そうすることができます。 –

2

正しく覚えていれば、アプリケーションのROOTコンポーネントの入力などは使用できません。 を参照してください: Angular 2 input parameters on root directive

https://github.com/angular/angular/issues/1858#issuecomment-151326461

を、これは動作していない理由は、あなたが角度 コンポーネントではありません置く いるあなたのindex.htmlということです。このため、Angularはこの要素をコンパイルしません。そして Angularは、実行時に属性値を読み取ることはありません。 のコンパイル時にのみ、値が読み取られます。そうしないと、パフォーマンスが低下します。

I.e.意図したとおり、これは動作しますが、私は正しい方法は角アプリケーションを作成し、アプリ内部の部品を使用する必要があることだと思う... @Mewel を説明することを

+0

この回避策を試すことができますindex.htmlページから値を取得するための角度のアプリケーションのための方法はありますか? –

+0

今は何もできません。しかし、index.htmlでなぜそれが必要なのですか? – jmachnik

+0

SEOの理由から、私のページはサーバーから動的に生成されます。これは実際にはaspxページです。私は、角型アプリケーションの値をサーバで初期化します。 –

関連する問題