无法通过Angular中的ngOnInit通过Observable从http.get获取数据

保罗

在组件初始化中,我正在从服务器获取数据

 import {Rules} from "../../interfaces/interfaces";
 rules: Rules
 ngOnInit() {
  this.tt = this.rulesService.getUserClientRules().subscribe(
   t => {
     console.log(t)
     console.log(t.clientRules.canAll)
     this.rules = t.clientRules
   },
   error => {
    console.log(error.error.message)
   }
  )
 }

我的服务代码是

getUserClientRules(): Observable<Rules> {
return this.http.get<Rules>('/api/rules/getClientUserRules/')}

and I have interface like:

export interface Rules {
 clientRules: any
}

我得到这样的回应:

**{clientRules: {canAll: true, canSee: false}}**

如何将这个对象放入规则对象?我想像rules.canAllrules.canSeeAll那样使用它...

当我尝试console.log(this.rules)时,我变得不确定

我需要这种结构规则{canAll:true,canSee:true}我需要将其用于* ngIf =“ rules.canSee”

谢谢您的反馈!!!

迈克尔·D

根据您的要求,界面实际上应该像

export interface Rules {
  canAll: boolean;
  canSee: boolean;
}

然后,您可以让RxJSmap运算符clientRules从HTTP调用返回属性

服务

getUserClientRules(): Observable<Rules> {
  return this.http.get<Rules>('/api/rules/getClientUserRules/').pipe(
    map(response => response['clientRules'])
  );
}

然后,您可以将响应直接分配给rules组件中变量

零件

rules: Rules

ngOnInit() {
  this.tt = this.rulesService.getUserClientRules().subscribe(
    t => {
      console.log(t);
      console.log(t.canAll);
      this.rules = t; // <-- the response is already the `clientRules` property
    },
    error => {
      console.log(error.error.message)
    }
  );
}

然后,您可以使用安全导航操作符在模板中使用它,?.以避免不必要的undefined错误。

模板

<div *ngIf="rules?.canSee">
  User can see...
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法通过Angular中的GET请求从json文件获取数据

Flutter - 无法通过 http.get 从 api 获取数据

无法从Angular中的GET请求获取数据

Angular 2,在 ngOnInit 中订阅后无法获取数据

Flot,angularjs并通过http get获取要绘制的数据

无法通过android中的HttpGet获取数据

使用 Angular Http Get 从 json 获取数据

如何在C#中检索和使用通过Http GET请求获取的数据

编辑我的HTTP调用以使用套接字(socket.io)通过Angular 2 App中的Observable接收数据

在Angularjs中无法通过$ _GET,$ _ POST和$ _REQUEST获取发布的数据

Ionic 3 Angular 5如何在ngOnInit中获取数据并将其转换为Observable

循环 ID 数组并通过 Observable 获取数据

如何通过 http 请求获取数据以在 Angular 中自动搜索?

Flutter:使用 http.get 获取数据

无法使用request.get获取数据

angular http get中如何通过参数过滤本地json数据?

如何获取通过$ .get方法返回的数据计数

从 Get 请求中获取 div 数据

在Angular 6中通过http get处理复杂对象

在 Angular 6 中通过 HttpClient 获取和存储 JSON 数据

通过Angular 2/4中的ID获取数据

在angular JS中通过ID获取单项数据

无法通过$ _GET请求从多个选择中获取值

使用 GET 数据从表单中获取数据。姜戈

无法通过应用从 CosmosDB 获取数据

无法通过下拉值获取数据

Linux无法通过管道获取数据

无法通过JQuery获取外部API数据

无法通过 Python 获取 Web 表数据