使用 angular2 显示引导警报

Posted

技术标签:

【中文标题】使用 angular2 显示引导警报【英文标题】:Displaying bootstrap alert using angular2 【发布时间】:2016-10-20 11:02:49 【问题描述】:

我想在用户保存数据后显示 Bootstrap 警报。

我的代码如下:

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 的新手)

【问题讨论】:

对我来说看起来不错 - 什么不起作用?控制台有错误吗? 没有错误。我认为它不会出错。随着“saveSuccess”变量的更新,将显示“div”。 @Pradeepb 这种方法对我不起作用。如果可能的话,你能分享一下 plunker 吗? 对不起,我现在没有任何与此相关的工作代码。 @Pradeepb 我做了和你在这里做的一样的事情。我没有错误,并且始终显示警报框。有什么想法吗? 【参考方案1】:

昨晚我没看到,可能太晚了。但是您的问题是在您设置 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;
            
        );
    

【讨论】:

非常感谢。你拯救了我的一天 :) 是否有任何指南/教程来了解这些知识?任何输入将不胜感激:) 这个不错:basarat.gitbooks.io/typescript/content/docs/tips/main.html【参考方案2】:

考虑这个动态警报组件:

Angular2 Service which create, show and manage it's inner Component? How to implement js alert()?

例如: .

this.alertCtmService.alertOK("Save changes???").subscribe(function (resp) 
    console.log("alertCtmService.alertOK.subscribe: resp=" + resp.ok);
    this.saveData();
.bind(this) );

See this Demo here

【讨论】:

以上是关于使用 angular2 显示引导警报的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2 - 打开/关闭默认引导模式

angular2表单验证本机警报[重复]

Angular2 beta - 引导 HTTP_PROVIDERS - “意外令牌 <”

Angular2 webpack:如何导入引导 css

使用带有 Angular2 应用程序的引导程序的问题

将引导程序添加到 angular2-seed 项目的 webpack 包中