如何在NativeScript的复合组件中的属性上设置默认值?

时间:2019-01-07 17:05:43

标签: typescript nativescript nativescript-angular

我正在用NativeScript编写一个复合组件,为此我扩展了GridLayout。我的属性(大多数情况下)可以正常工作,但是我需要为其设置默认值。

如果我在构造函数中设置值,则尝试在CSS中为这些属性设置值的尝试将失败:CSS值将不会调用“ setNative”函数-仅在构造函数中设置该值。 / p>

我还在属性上使用“ getDefault”功能来尝试设置默认值。该函数不会被调用。

composite-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”来评估默认值,但事实并非如此。默认值保持为“自动”,这根本不是我想要的默认值。

0 个答案:

没有答案