- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在从我的身份验证服务调用一个方法,该方法返回用户名和密码是否正确,还有一个身份验证 token 。当我尝试在通过调用 getAuthData 方法获取数据后打印值时,它会打印 authData.status 的默认/无效值 - false。
但是,通过执行 {{authData.status}} 从我的模板 View 打印值,它在提交我的表单后显示正确的值。我试过谷歌搜索、浏览文档,但到目前为止还没有成功。我应该订阅服务更改还是我错过了什么?
问题显示在authSubmit()方法@admin.component.ts
admin.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { AdminComponent } from './admin.component';
import { AuthService } from '../shared/auth/index';
@NgModule({
imports: [CommonModule, FormsModule],
declarations: [AdminComponent],
exports: [AdminComponent],
providers: [AuthService]
})
export class AdminModule { }
auth.service.ts
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/throw';
export class AuthData {
public status: boolean;
public token: string;
public constructor(initStatus: boolean = false, initToken: string = '') {
this.status = initStatus;
this.token = initToken;
}
}
@Injectable()
export class AuthService {
public authData: AuthData;
public constructor(public http: Http) {
this.authData = new AuthData();
}
public getAuthData(user: string, pass: string): Observable<AuthData> {
return this.http.get('http://api.dev/auth?user=' + user+ '&pass=' + pass)
.map((res:Response) => res.json())
.catch((error:any) => Observable.throw(error.json().error || 'Error'));
}
}
admin.component.ts
import { Component } from '@angular/core';
import { AuthService, AuthData } from '../shared/index';
@Component({
moduleId: module.id,
selector: 'my-admin',
templateUrl: 'admin.component.html',
styleUrls: ['admin.component.css']
})
export class AdminComponent {
public authUser: string;
public authPass: string;
public authData: AuthData;
public constructor(public authService: AuthService) {
this.authData = this.authService.authData;
}
public authSubmit(): boolean {
this.authService.getAuthData(this.authUser, this.authPass)
.subscribe(
data => this.authData = data,
err => console.log(err)
);
// alert result: authData.status = false | should be: true
alert('authData.status= ' + authdata.status);
return false;
}
}
admin.component.html
<form *ngIf="!authData.status" (submit)="authSubmit()">
<input [(ngModel)]="authUser" type="text">
<input [(ngModel)]="authPass" type="password">
<button type="submit">Sign In</button>
</form>
authData.status = {{authData.status}}
最佳答案
解决了,如此愚蠢的错误和简单的解决方案。
public authSubmit(): boolean {
let authStatus: boolean = false;
this.authService.getAuthData(this.authUser, this.authPass)
.subscribe(
data => {
this.authService.authData = data;
authStatus = data.status;
},
err => console.log(err)
);
alert('authStatus = ' + authStatus);
return false;
}
关于angularjs - Angular 2 订阅 http 服务更改?直接方法调用返回过时的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40329654/
我是非洲的一名学生,在我们的土地上,确实存在缓慢且昂贵的互联网连接,这就是为什么每当我们听到安装软件的“在线存储库”方法这个词时都会害怕得发抖。该死的,这通常意味着你必须去别处看看。 问题。(如果没有
我正在使用 OpenCV 1 进行一些图像处理,并且对 cvSetErrMode 函数(它是 CxCore 的一部分)感到困惑。 OpenCV 具有三种错误模式。 叶:调用错误处理程序后程序终止。 父
安装新版 IDEA.14 后,(maven)项目的部署显着增加(从 15 秒增加到 47 秒)。 最佳答案 原因: IDEA 使用 捆绑 Maven的版本 解决方案:设置 (ctrl+alt+S) -
在 .NET 中,您可以将某些方法标记为过时,以便开发人员在尝试使用已弃用的方法时收到警报。 Private Sub FormerMethod() 问题是您只能在您控制的类中执行此操作。当您希望开发
一段时间以来,我一直在尝试自己解决这个问题,但一直没有成功。当我大约有 10% 的时间重新部署我的 Rails 应用程序时,就会发生这种情况。其他 90% 的时间部署顺利进行。 我试了又试,还是没成功
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我正在学习 HTTP/2 协议(protocol)。它是一个带有小消息帧的二进制协议(protocol)。它允许在单个 TCP 连接上进行流复用。从概念上讲,它似乎与 WebSockets 非常相似。
在 Matlabs 的最新版本中,specgram 函数被 spectrogram 取代,文档说明: Note. To obtain the same results for the removed
我们试图在构建时标记外部类型(如 ConfigurationManager)的使用。 自定义代码分析字典可以提供帮助 [1],但仅限于项目中包含源代码的情况。同样,Obsolete 属性适用于项目中包
我将 Anaconda 与 Python 3 结合使用,并尝试安装 cc 包,这是 uber h3 包的要求。 尝试通过以下方式在 anaconda 命令行中安装时: pip install cc 我
我在 Razor 中创建了一个专门用于显示货币的显示模板,现在我想在我的代码中删除它并替换为接受字符串格式(我可以将其设置为“C”)的标准文本显示模板。 然而,出现了很多次,所以我想使用类似 [Obs
我希望我的网站具有如下所示的 URL: example.com/2010/02/my-first-post 我有我的 Post带 slug 的模型字段('我的第一篇文章')和 published_on
4.7 并喜欢在 qgraphicsview 上叠加两个图像。顶部的图像应是半透明的,以便能够透过它看到。最初,两个图像都是完全不透明的。我期望存在一些为每个像素设置全局 alpha 值的函数,但似乎
总结: 我在我的 Swift 代码中犯了一个错误,我已经修复了它。然后我问自己为什么会这样,我该如何避免。我尝试了一些方法,但没有任何帮助。 我把错误和我的想法放在下面。我希望你能教我避免这种错误的正
我正在尝试重命名在 SVN 中跟踪的 Java 包。这一切似乎都有效。它将代码移动到新包等。然而,噩梦就在那时开始,乐趣就开始了,这取决于你的观点。摆脱旧包很难。 我陷入了“过时”或“不存在”消息的循
我们使用 NLog 或 Serilog 进行日志记录。我们正忙于将系统从 ASP.NET 移植到 ASP.NET Core,这 has logging built in . 理想情况下,我们希望放弃
ETag header 的定义 ( https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag ): The ETag HTTP re
我是一名优秀的程序员,十分优秀!