2016-10-21 4 views
2

私はドロップダウン選択メニューのコンポーネントを作っています。私は、メニューのオプションを動的にロードできるようにしたい。私は最初、@Inputを使って、データを取得するために必要なコントローラメソッドのURLを渡すことで、これを行うことを考えていました。ここで私は今のところ(簡体字)しているものです:角2 - @InputでURLを渡す

export class DropdownInput { 
    // List of options for the dropdown to have 
    public options: InputOption[]; 

    // Url for controller method to get options 
    @Input() optionSrc: string; 

    // Get list of options on construction 
    constructor(http: Http) { 
     http.get(this.optionSrc).subscribe(result => { 
      this.options = result.json(); 
     }); 
    } 
} 

そして、私はこのように、このドロップダウンコンポーネントを使用しようとしていた。

<dropdown-input 
    [optionSrc]="/api/LogViewer/GetOpts"> 
</dropdown-input 

をしかし、私はエラーが取得しています:「パーサーエラー:予期しないトークンを/ [/ api/LogViewer/GetOpts]の1列目にあります。私はまた、「『/ API/LogViewerの/ getoptsは』」としてそれをやって試してみたが、これはエラーで失敗「にSyntaxError:予期しないトークン<をJSONに位置0にJSON.parseで()」。私は、親クラスの変数にurlを入れ、それにバインドするときに同じエラーが発生します。

これは可能ですか?あるいは私は自分の目標を達成する別の方法を試みるべきですか?

ありがとうございます!私が持っていた

答えて

2

あなたは次の操作を行う必要がある静的な文字列を渡しているように、

<dropdown-input 
    [optionSrc]="'/api/LogViewer/GetOpts'"> 
</dropdown-input> 

コンストラクタはあなたのための作業をdoens'tならば、あなたは

ngOnInit() { 
     http.get(this.optionSrc).subscribe(result => { 
      this.options = result;      
      //<<<### changed this line... as suggested by StefanSvrkota 
     }); 
} 
+0

、同じようngOnInit()を使用することを検討すべきですスペースを使わずにこれを試してみましたが、残念ながら私はまだエラーが発生しています: "SyntaxError:予期しないトークン)" はどこから来たのですか?私はこのhttp.getの結果を購読していますからですか? – csy9

+0

何かがcsy9 @ – micronyks

+0

..あなたは、私は推測まだ私たちに示していないこれがある私は、あなたが実際にそれがJSONではありませんしながら、JSONに 'result'を解析しようとしているので、あなたがエラーを取得していると信じています。 'this.options = result;'を試して、それがうまくいくかどうか私たちに知らせてください。または単に 'console.log(result);'そしてあなたが得たものを見てください。 –

関連する問題