Angular2布尔型数组

3
声明时,请使用以下内容:
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;

我只能做到 isCollapsedDet[1][1] = true,只需设置 isCollapsedDet : boolean[] 并且每个项目 isCollapsedDet[i] = [] - Felix
1
你可以从这个问题的答案中获得灵感:https://dev59.com/BFkT5IYBdhLWcg3wPtMv - Dawid Zbiński
3个回答

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中数组的信息可以在这里找到 - 还有一些更高级的类型在这里
在此处可以找到一些有用的答案:多维数组初始化
其他链接:TypeScript多维数组

谢谢你们所有人,特别是对于及时的回答。现在它可以工作了。 - K Oul
因为我在模板中使用了isCollapsedDet,这样做正确吗?<span *ngIf="!isCollapsedDet[i][j]" class="glyphicon glyphicon-chevron-down"></span> - K Oul
是的。如果ij变量是整数类型并且该值存在于数组中,则应该可以工作。 - Dawid Zbiński

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];

1
当您在访问任何类中的属性并且想要将其作为类成员时,请不要忘记提及this,正如Dawid所说,您不能通过使用逗号(,)来分隔索引来分配值。
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;
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接