Javascript 类型';xx和x27;不可分配给类型';任何【】Iterable<;任何>;|&燃气轮机;(Iterable<;any>;any[])(any[]和Iterable<;any>;)&x27;
我得到以下错误。我试图解决这个问题已经有一段时间了,但是运气不好。谁能帮帮我吗 类型“Student”不可分配给类型“any[]| Iterable”| (Iterable&any[])|(any[]&Iterable)“。“学生”类型为 不可分配给类型“any[]&Iterable”。类型“Student”不是 可分配给类型“any[]” app.component.htmlJavascript 类型';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
<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我已经添加了相关的代码块。