2016-06-18 87 views
6

我想在用戶保存數據時顯示引導警報。使用angular2顯示引導警報

我的代碼如下:

html頁面:

<div class="alert alert-success" *ngIf="saveSuccess"> 
    <strong>Success!</strong> 
</div> 
<form #f="ngForm" (submit)="saveUser(f.value)"> 
     /////Some form fields 
    <button class="form-control btn btn-primary" type="submit">save</button> 
</form> 

app.component.ts:

export class UserProfileComponent{ 
saveSuccess: boolean; 
user: IUser; 

saveUser(user:IUser) { 
    this.headers = new Headers(); 
    this.headers.append('Content-Type', 'application/json'); 
    this.editUserForm = user; 
    this._http.post('api/user/'+this._current_user._id, JSON.stringify(this.editUserForm),{ 
     headers: this.headers 
    }).subscribe(function(data) { 

     // if the update is successful then set the value to true 
     // this is getting updated 
     if (data){ 
      this.saveSuccess = true; 
     } 
     else{ 
      this.saveSuccess = false; 
     } 
    }); 
} 

}

我想要顯示的警報時,成功的POST完成。

我想我錯過了如何將'saveSuccess'變量綁定到html,以便在成功保存完成後顯示警報。 (我是Angular2的新手)

+1

看起來好像沒什麼問題 - 什麼不起作用?控制檯中的任何錯誤? – rinukkusu

+0

沒有錯誤。我不認爲這會給錯誤。由於'saveSuccess'變量正在更新並取決於'div'將被顯示。 – Pradeepb

+0

@Pradeepb這種方法對我不起作用。如果可能的話,你可以分享掠奪者嗎? –

回答

4

昨晚我沒看到它,可能已經太晚了。但是,您的問題是在設置saveSuccess的內聯函數中沒有this上下文。

我建議你使用lambdas或「胖箭頭功能」。取而代之的

function(data) { ... } 

你做

(data) => { ... } 

這樣的背景下this將被保留。只要在需要內聯功能的地方使用它,您就不會再有問題了! :)


你的代碼的lambda函數:

export class UserProfileComponent{ 
    saveSuccess: boolean; 
    user: IUser; 

    saveUser(user:IUser) { 
     this.headers = new Headers(); 
     this.headers.append('Content-Type', 'application/json'); 
     this.editUserForm = user; 
     this._http.post('api/user/'+this._current_user._id, JSON.stringify(this.editUserForm),{ 
      headers: this.headers 
     }) 
     .map((data: Response) => data.json) // <-- also add this to convert the json to an object 
     .subscribe((data) => { // <-- here use the lambda 

      // if the update is successful then set the value to true 
      // this is getting updated 
      if (data){ 
       this.saveSuccess = true; 
      } 
      else{ 
       this.saveSuccess = false; 
      } 
     }); 
    } 
} 
+1

非常感謝。你救了我的一天:)有沒有任何指導/教程來了解這些知識?任何輸入將不勝感激:) – Pradeepb

+1

這是一個很不錯的:https://basarat.gitbooks.io/typescript/content/docs/tips/main.html – rinukkusu