2017-06-20 44 views
3

angular2陣列在聲明如下:的布爾

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

我只能做'isCollapsedDet [1] [1] = true'只需設置'isCollapsedDet:boolean []'並且每個項目'isCollapsedDet [i] = []' –

+1

您可以激發自己對這個問題的回答:https ://stackoverflow.com/questions/38875051/declare-an-array-in-typescript –

回答

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 

更多的打字稿陣列可以發現here - 還有一點點更先進的各類here

這裏找到一些有用的答案:Multidimensional array initialization

其他鏈接:TypeScript Multidimensional Arrays

+0

謝謝你的一切,特別是提示答案。它現在正在工作 –

+0

,因爲我在模板中使用isCollapsedDet,這是正確的嗎?

+0

是的。可能,如果'i'和'j'變量是整數類型並且該值存在於數組中 - 它應該可以工作 –

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說你不能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; 
    } 
} 
通過分離指標賦值