Я пишу составной компонент на NativeScript, для которого я расширяю GridLayout. У меня есть свойства (в основном) работают, но мне нужно установить значения по умолчанию для них.
Если я установлю значения в конструкторе, попытки установить значения для этих свойств в CSS будут неудачными: функция setNative не будет вызываться для значений CSS - только для установки значения в конструкторе.
Я также использую функцию "getDefault" в свойстве, чтобы попытаться установить значение по умолчанию. Функция не вызывается.
Композитный-component.ts
@CSSType("CompositeComponent")
export class CompositeComponent extends GridLayout {
constructor() {
super();
// If I set this here, none of the attempts to set it in CSS will work
// this.height = 50;
let innerComponent = builder.load(__dirname + '/composite-component.xml') as View;
innerComponent.bindingContext = this;
this.addChild(innerComponent);
}
[heightProperty.getDefault](): PercentLength {
return 50;
}
[heightProperty.setNative](value: PercentLength) {
// For some reason, it is necessary to call this from here, otherwise the CSS won't work at all...
this.notifyPropertyChange("height", value);
}
}
home.component.html
<StackLayout verticalAlignment="center">
<CompositeComponent image="res://icons/icn_person/icn_person"></CompositeComponent>
</StackLayout>
home.component.scss
CompositeComponent {
background-color: #ff0000;
}
Я ожидаю, что «heightProperty.getDefault» будет вызван для оценки значения по умолчанию, но это не так. Значением по умолчанию остается «auto», что совсем не то, что я хочу, чтобы оно было по умолчанию.