export abstract class GridColumn {
public field?: string;
public sortField?: string;
public header?: string;
public footer?: string;
public sortable?: any = true;
public editable?: boolean = false;
public filter?: boolean = true;
public filterMatchMode?: string = 'contains';
public filterPlaceholder?: string;
public style?: any;
public styleClass?: string;
public hidden?: boolean = false;
public selectionMode?: string = 'multiple';
public frozen?: boolean;
}
たとえば、これを行うと、定義されたプロパティを持つオブジェクトだけが返されます。私が欲しいものオブジェクトリテラルを持つAngular2 init抽象クラス
private gridConf: GridColumn = <GridColumn>{
field: "test2",
header: "Test2",
filter: true,
filterMatchMode: "contains",
filterPlaceholder: "Search from Test",
sortable: true,
selectionMode: "single"
};
は、定義されているすべてのプロパティと、すべてのデフォルト値を持つタイプGridColumn
の目的です。
これは動作しません:
private gridConf: GridColumn = GridColumn({
field: "test2",
header: "Test2",
filter: true,
filterMatchMode: "contains",
filterPlaceholder: "Search from Test",
sortable: true,
selectionMode: "single"
});
コンストラクタは長いものを書くために私を強制すると私は常に特定の順序ですべてのプロパティを追加する必要があります。
最終目標は、任意の順序ですべてのデフォルトおよび/または定義された特性を有している。このようなものを使用することです:私は見つけることができる「ハック」
private columns: Array<GridColumn> = [
<GridColumn>{
field: "test",
selectionMode: "single",
filter: true,
filterMatchMode: "contains",
filterPlaceholder: "Search from Test",
sortable: true,
header: "Test"
},
<GridColumn>{
field: "test2",
header: "Test2",
filter: true,
filterMatchMode: "contains",
filterPlaceholder: "Search from Test",
sortable: true,
selectionMode: "single"
}
];
最も近い場所フィールド、抽象を削除して追加することでした
public constructor(
fields?: GridColumn) {
if (fields) Object.assign(this, fields);
}