私は "this"キーワードを使用し、メソッドではなくクラス自身を意味するので、メソッドの代わりにクラス内で矢印関数を使用します。子クラスのオーバーライドアロー関数
私は、子クラスによってオーバーライドされる空の矢印関数を定義する抽象クラスを持っています。修正、それはもともと、このでした:
abstract _configureMultiselect(): void;
が、矢印の機能とそれを上書きしようとしているが、これを引き起こした:
Class 'CategorySelect' defines instance member function '_configureMultiselect', but extended class 'SearchFilterCategorySelect' defines it as instance member property.
(property) Select.SearchFilterCategorySelect._configureMultiselect:() => void
だから私は親クラスの空の矢印機能にそれを変更:
_configureMultiselect =() => {};
しかし、私はそれを上書きしようとすると、それだけでそれをオーバーライドしないので、私は明らかにそれが機能を持つことを望むとき、子クラスの私の_configureMultiselect
は空です。ここに私のコードは次のとおりです。
interface ICategorySelect {
multiselectConfiguration: Object;
numberOfCategories: KnockoutObservable<number>;
allSelected: KnockoutObservable<boolean>;
selectedCategories: KnockoutObservableArray<Category>;
categories: KnockoutObservableArray<Category>;
}
abstract class CategorySelect implements ICategorySelect {
multiselectConfiguration: Object;
numberOfCategories: KnockoutObservable<number>;
allSelected: KnockoutObservable<boolean>;
selectedCategories: KnockoutObservableArray<Category>;
categories: KnockoutObservableArray<Category>;
constructor() {
this._configureMultiselect();
this._instantiateCategories();
this.numberOfCategories = ko.observable(7);
this.allSelected = ko.observable(false);
}
_configureMultiselect =() => {};
_instantiateCategories =() => {
this.categories = ko.observableArray([
new Category("Meat", 1),
new Category("Dairy", 2),
new Category("Confectionary", 3),
new Category("Dessert", 4),
new Category("Baking", 7),
new Category("Grocers", 6),
new Category("Restaurants", 5),
new Category("Condiments", 8),
new Category("beverages", 9),
]);
}
}
export class SearchFilterCategorySelect extends CategorySelect {
constructor() {
super();
}
_configureMultiselect =() => {
this.multiselectConfiguration = {
buttonWidth: '100%',
buttonContainer: '<div style="height: 64px;" />',
buttonClass: 'none',
nonSelectedText: "select categories",
nSelectedText: ' thingymajigs',
allSelectedText: "all of the things!!",
selectAllNumber: false,
includeSelectAllOption: true,
disableIfEmpty: true,
onSelectAll:() => {
this.allSelected(true);
},
onInitialized:() => {
},
onChange: (option, checked) => {
this.selectedCategories = ko.observableArray([]);
var self = this;
$('#category-select option:selected').each(function() {
self.selectedCategories.push(
<Category>($(this).text(), $(this).val())
)
});
console.log(this.selectedCategories());
if(this.selectedCategories().length < this.numberOfCategories()) {
this.allSelected(false);
}
}
};
}
}
どのように私は正常に子クラスで_configureMultiselect
をオーバーライドしていますか?
これを動作させることはできません。私のコードに適用されたコード例をお願いしますか?私のコードはあなたの答えのリンクと同じではないので、実際には適用されません。リンクでは、親メソッドに実装があります – BeniaminoBaggins