2016-04-18 11 views
0

私はionic2 http postサービスを行っています。例外:「クリック」の評価中のエラーは、最初のクリック後にのみ発生します。

「(クリック)」機能を使用すると、私のhttp投稿が呼び出され、すべてが初めて機能します。奇妙なことは、ボタンを押すと発生します2回目

このエラーがポップアップ表示されます:

Error Message

をだから私はそれで遊んでしようとしました。私は、click関数が呼び出されるメソッドの中にconsole.logを追加しました。

第3回ボタンが押されたなど、エラーメッセージもなく、私のhttpポストも動作していません。メソッド内のmy console.logのみがクリック時に印刷されます。

Console log

これは私のhtmlです:

<button class="button button-block" (click)="loginSuccess()" style="width:70%;"> 
<strong>Log In</strong> 
</button> 

これは私のjsです:

loginSuccess() { 
    console.log("Invoked Meod!"); 
    this.httpService.loginService("VariablesToThrowOver").subscribe(
    data => {this.httpService = data.results; console.log(data);}, 
    err => console.log(err), 
    () => console.log('Invoked Login Service Complete')); 
} 

そして、これは私のサービスのjsです:

loginService(httpService) { 
    console.log("Service Function Variable: "+httpService); 
    var body = 'username=' + "admin" + '&password=' + "admin" +''; 
    var headers = new Headers(); 
    headers.append('Content-Type', 'application/x-www-form-urlencoded'); 
    var url = 'http://localhost/webservice/userrWS.asmx/login'; 
    return this.http.post(url,body, {headers: headers}).map(res => res.json()); 
} 

私はそれはsometを持っていると推測する購読サービスとは関係がありません。そのような場合は、サブスクライブを閉じて同じ要求を再度許可するにはどうすればよいですか?

+0

あなたの質問には、(クリック)= "xxx"は表示されず、クリックするとどの機能が実行されるのか他の情報は表示されません。 –

+0

@GünterZöchbauerこんにちは、私は編集しました!ありがとう! – Gene

答えて

1

あなたのコードは、特別にこのラインでは、少し奇妙です:

this.httpService.loginService("VariablesToThrowOver").subscribe(
    data => {this.httpService = data.results; console.log(data);}, // <------ 

は、実際には、あなたは、ログイン処理を実行するために使用するサービス変数自体に受信したデータを設定してみてください。私はかなりdata.resultsオブジェクトにloginServiceメソッドがないことを確信しています。したがって、もう一度クリックすると、エラーが発生します。

このデータを保存してビューに表示するには、コンポーネントの別の(別個の)プロパティを選択します。

this.httpService.loginService("VariablesToThrowOver").subscribe(
    data => { 
    this.results = data.results; // <------ 
    console.log(data); 
    }, 
関連する問題