*ngfor在角视图中未显示我的[对象对象]数据

发布于 2025-02-04 13:16:00 字数 1429 浏览 3 评论 0 原文

我正在尝试迭代我的角模板中从FastApi后端端点返回的对象。 (我的数据实际上在那里,但是我无法迭代它,唯一使用的语法是使用JSON Pipeline) 结果在我的前端是这样: 编辑(数据)

{  
"1": { "Id": 1, "ruleData": [], "ruleName": "someName", "testDesc": "", "test": "test", "ruleErrorMessage": "someError" } ,

"2": { "Id": 2, "ruleData": [], "ruleName": "someName", "testDesc": "", "test": "test", "ruleErrorMessage": "someError" } 
}

但没有出现数据,这是我的模板代码

 <h5 *ngFor="let smth of analysisResults.someData">
                   testets >>> {{smth}}
</h5>

我的服务代码:

export class backend{
    backendURL="http://localhost:8000/doSomthing/";
    constructor(private httpclient: HttpClient){}
    requrl: string;
    
    getQuality(text: string){
        this.requrl=this.backendURL+text;
        return this.httpclient.get<AnalysisResults>(this.requrl)
    } 
}

我的.TS代码:

constructor(private backend: backendService) { }
  req = new FormControl('');
  analysisResults: AnalysisResults;
  getQuality(reqValue: string) {
    this.backend.getQuality(reqValue)
      .subscribe((data: AnalysisResults) => this.analysisResults = {
          score:(data as any[])['score'] ,
          someData:(data as any[])['someData'] ,
      } ) } 

我的模型代码:

export interface AnalysisResults {
    score?:number;
    someData?:[];
}



I'm trying to iterate over an object returned from the fastAPI backend endpoint in my Angular template. ( my data actually is there, but I can't iterate over it, the only syntax that works with is is when using a JSON pipeline )
and the result is like this in my front end:
EDIT ( DATA )

{  
"1": { "Id": 1, "ruleData": [], "ruleName": "someName", "testDesc": "", "test": "test", "ruleErrorMessage": "someError" } ,

"2": { "Id": 2, "ruleData": [], "ruleName": "someName", "testDesc": "", "test": "test", "ruleErrorMessage": "someError" } 
}

but data doesn't appear, here's my template code

 <h5 *ngFor="let smth of analysisResults.someData">
                   testets >>> {{smth}}
</h5>

my service code:

export class backend{
    backendURL="http://localhost:8000/doSomthing/";
    constructor(private httpclient: HttpClient){}
    requrl: string;
    
    getQuality(text: string){
        this.requrl=this.backendURL+text;
        return this.httpclient.get<AnalysisResults>(this.requrl)
    } 
}

my .ts code:

constructor(private backend: backendService) { }
  req = new FormControl('');
  analysisResults: AnalysisResults;
  getQuality(reqValue: string) {
    this.backend.getQuality(reqValue)
      .subscribe((data: AnalysisResults) => this.analysisResults = {
          score:(data as any[])['score'] ,
          someData:(data as any[])['someData'] ,
      } ) } 

my model code:

export interface AnalysisResults {
    score?:number;
    someData?:[];
}



如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淤浪 2025-02-11 13:16:00

在界面中,您已经定义了没有类型的某种程序的数组。如果将其施加到任何[],则可以使用它。否则它将是一个空数组,因为打字稿迫切需要一种类型。

export interface AnalysisResults {
  score?:number;
  someData?:any[];
}

请参阅Stackblitz中的示例。如果您删除任何类型,然后离开数组,Stackblitz将抱怨。

In the interface you have defined an array for someData without a type. If you cast it to any[] you can use it. Else it will be an empty array because typescript desperately needs a type.

export interface AnalysisResults {
  score?:number;
  someData?:any[];
}

See the example in stackblitz. If you remove the any type and just leave the array, stackblitz will complain.
https://stackblitz.com/edit/angular-ivy-bovpdk?file=src/app/app.component.ts

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文