Javascript 类型';xx和x27;不可分配给类型';任何【】Iterable<;任何>;|&燃气轮机;(Iterable<;any>;any[])(any[]和Iterable<;any>;)&x27;

Javascript 类型';xx和x27;不可分配给类型';任何【】Iterable<;任何>;|&燃气轮机;(Iterable<;any>;any[])(any[]和Iterable<;any>;)&x27;,javascript,angular,typescript,Javascript,Angular,Typescript,我得到以下错误。我试图解决这个问题已经有一段时间了,但是运气不好。谁能帮帮我吗 类型“Student”不可分配给类型“any[]| Iterable”| (Iterable&any[])|(any[]&Iterable)“。“学生”类型为 不可分配给类型“any[]&Iterable”。类型“Student”不是 可分配给类型“any[]” app.component.html <div *ngFor="let stu of studentSelected; let i = i

我得到以下错误。我试图解决这个问题已经有一段时间了,但是运气不好。谁能帮帮我吗

类型“Student”不可分配给类型“any[]| Iterable”| (Iterable&any[])|(any[]&Iterable)“。“学生”类型为 不可分配给类型“any[]&Iterable”。类型“Student”不是 可分配给类型“any[]”

app.component.html

<div *ngFor="let stu of studentSelected; let i = index;">
  <tr>
    <td>{{stu.f}} :</td>
    <ng-container *ngFor="let s of stu.ff">
      <td>{{s.s_name}}</td>
    </ng-container>
  </tr>
</div>
School.model.ts

import { Component, VERSION } from '@angular/core';
import { Student } from './student.model';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  studentSelected: Student | any = {
    f: 'dfd',
    ff: [
      {
        s_name: 'nswq'
      }
    ]
  };
}
export class School {
  s_name: string;

  constructor(s_name: string = '') {
    this.s_name = s_name;
  }
}
import { School } from './School.model';

export class Student {
  f: string;
  ff: School[];

  constructor(f: string = '', ff: [] = []) {
    this.f = f;
    this.ff = ff;
  }
}
student.model.ts

import { Component, VERSION } from '@angular/core';
import { Student } from './student.model';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  studentSelected: Student | any = {
    f: 'dfd',
    ff: [
      {
        s_name: 'nswq'
      }
    ]
  };
}
export class School {
  s_name: string;

  constructor(s_name: string = '') {
    this.s_name = s_name;
  }
}
import { School } from './School.model';

export class Student {
  f: string;
  ff: School[];

  constructor(f: string = '', ff: [] = []) {
    this.f = f;
    this.ff = ff;
  }
}

如注释中所述,
selectedStudent
是一个对象,因此删除外部ngFor。另外,从代码中删除所有
any
。如果要使用
any
,那么使用TypeScript编码是没有用的。因此,删除
any
,只需将变量声明为
Student
的一种类型:

studentSelected:Student={
f:‘dfd’,
ff:[
{
s_名称:“nswq”
}
]
};
我看到您正在使用带构造函数的类。请注意,您如何声明您的
studentSelected
不会成为您的类的实例。我喜欢使用接口,除非有特定的理由需要类,比如特定于类的方法。您似乎没有,所以我建议您只使用接口:

导出接口学校{
s_名称:字符串;
}
导出接口学生{
f:字符串;
ff:学校[];
}
如果您想将数据作为类,请记住,在创建类实例时,需要调用
newstudent({….})

至于模板。。。如前所述,从模板中删除外部的
*ngFor


{{studentSelected.f}}:
{{s.s_name}}

您的

如注释中所述,
selectedStudent
是一个对象,因此请删除外部ngFor。另外,从代码中删除所有
any
。如果要使用
any
,那么使用TypeScript编码是没有用的。因此,删除
any
,只需将变量声明为
Student
的一种类型:

studentSelected:Student={
f:‘dfd’,
ff:[
{
s_名称:“nswq”
}
]
};
我看到您正在使用带构造函数的类。请注意,您如何声明您的
studentSelected
不会成为您的类的实例。我喜欢使用接口,除非有特定的理由需要类,比如特定于类的方法。您似乎没有,所以我建议您只使用接口:

导出接口学校{
s_名称:字符串;
}
导出接口学生{
f:字符串;
ff:学校[];
}
如果您想将数据作为类,请记住,在创建类实例时,需要调用
newstudent({….})

至于模板。。。如前所述,从模板中删除外部的
*ngFor


{{studentSelected.f}}:
{{s.s_name}}

您的

任何[]都至少需要一个数组,Student是一个对象。您需要添加
| any
@tom10271,但我仍然看不到html文件的输出。帮助。请将相关代码作为代码块放入问题中。如果(当!)链接消失,这个问题就没有用了。@AJT82我已经添加了相关的代码块。任何[]都至少需要一个数组,Student是一个对象。您需要添加
| any
@tom10271,但我仍然看不到html文件的输出。帮助。请将相关代码作为代码块放入问题中。如果(当!)链接失效,这个问题就没有用了。@AJT82我已经添加了相关的代码块。