angular2数组的布尔值

时间:2017-06-20 10:03:21

标签: arrays angular multidimensional-array

声明时:

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;

3 个答案:

答案 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

其他链接:TypeScript Multidimensional Arrays

答案 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;
  }
}