【问题标题】:angular2 array of booleanangular2 布尔数组
【发布时间】:2017-11-22 19:33:09
【问题描述】:

声明时:

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] = []
  • 你可能会从这个问题的答案中得到启发:stackoverflow.com/questions/38875051/…

标签: arrays angular multidimensional-array


【解决方案1】:

您不能通过用逗号嵌套来将值添加到数组中。 键入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

【讨论】:

  • 谢谢大家,特别是及时的回答。它现在正在工作
  • 因为我在模板中使用了 isCollapsedDet,这是正确的吗?
  • 是的。可能,如果 ij 变量是整数类型并且值存在于数组中 - 它应该可以工作
【解决方案2】:

如果你真的只需要你提到的元素,你可以这样做:

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

【讨论】:

    【解决方案3】:

    当您访问任何类中的属性时,如果您想将其设为类成员,请不要忘记提及 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;
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-10-29
      • 1970-01-01
      • 2017-08-25
      • 2016-10-24
      • 2017-08-19
      • 2012-12-29
      • 2010-10-12
      • 2016-02-03
      • 2015-09-27
      相关资源
      最近更新 更多