声明时:
public isCollapsedDet : boolean[][];
public isCollapsedCyc : boolean[] ;
我收到以下错误消息:
/nestedForm/src/app/app.component.ts (95,7): Type 'boolean' is not assignable to type 'boolean[][]'.
我只需要获取以下数组:
isCollapsedCyc[0] = true;
isCollapsedCyc[1] = false;
//
isCollapsedDet[0, 0] = true;
isCollapsedDet[0, 1] = true;
isCollapsedDet[1, 0] = false;
isCollapsedDet[1, 1] = true;
答案 0 :(得分:3)
您不能通过使用逗号嵌套来为数组添加值。
类型boolean[][]
意味着将有一个布尔数组的数组,例如:
[[true, false], [false, true]] // this is boolean[][] or Array<Array<boolean>>
如果要为其设置值,则需要将其嵌套为普通数组:
isCollapsedDet[0, 0] = true;
// error - comma has nothing to do there
isCollapsedDet[0][0] = true;
// success - element isCollapsedDet[0][0] in array isCollapsedDet[0] is true
可以找到有关TypeScript中数组的更多信息here - 以及更高级的类型here
这里找到一些有用的答案:Multidimensional array initialization
答案 1 :(得分:1)
如果你真的只需要你提到的元素,你可以这样做:
let isCollapsedDet: boolean[][] = [[], []];
let isCollapsedCyc: boolean[] = [];
isCollapsedCyc[0] = true;
isCollapsedCyc[1] = false;
isCollapsedDet[0][0] = true;
isCollapsedDet[0][1] = true;
isCollapsedDet[1][0] = false;
isCollapsedDet[1][1] = true;
或者简单地说:
let isCollapsedDet: boolean[][] = [
[true, true], [false, true]
];
let isCollapsedCyc: boolean[] = [true, false];
可以进一步减少,因为编译器会根据初始化推断出类型:
let isCollapsedDet = [
[true, true], [false, false]
];
let isCollapsedCyc = [true, false];
答案 2 :(得分:1)
当您在任何课程中访问某个媒体资源时,如果您想将其作为课程成员,那么请不要忘记提及this
,而且正如Dawid所说,您无法通过用comma(,)
export class HelloWorld implements OnInit{
// Declaring the variable for binding with initial value
yourName: string = '';
public isCollapsedDet : boolean[][] = [[], []];
isCollapsedCyc : boolean[] = [];
ngOnInit() {
this.isCollapsedCyc[0] = true;
this.isCollapsedCyc[1] = false;
//
this.isCollapsedDet[0][0] = true;
this.isCollapsedDet[0][1] = true;
this.isCollapsedDet[1][0] = false;
this.isCollapsedDet[1][1] = true;
}
}