0

我制作了一个具有参数的自定义组件。如果未设置参数,我已经重写OnParametersSet了引发异常的方法,但是我需要确保参数使用两种方式绑定。如果将其设置为MyParameter="somevalue"不会引发异常并且不会触发我的事件回调(我定义了 MyParameterChanged 事件回调)。有没有办法确保设置此参数,@bind-MyParameter="somevalue"以便子组件通知父组件的更改?我知道还有其他方法,例如 CascadingParameters(将其耦合到模型)或自定义事件回调(然后父页面必须传递 EvenCallback 方法)

//parent
<mycustomcomponent @bind-MyParameter="parentModel.property" />

//child
<div><div/>
public List<string> MyParameter {get;set;}
[Parameter] public EventCallback<List<string>> MyParameterChanged { get; set; }
protected override void OnParametersSet()
    {
        base.OnParametersSet();

        if (myproperty is null)
            throw new ArgumentException("The 'MyParameter' property is not set", nameof(MyParameter));
    }
// some methods to modify MyParameter
4

1 回答 1

0

我可以通过检查 EventCallback 是否有委托来做到这一点:

MyPropertyChanged.HasDelegate如果属性设置为MyProperty="somevalue"而不是返回 false@bind-MyProperty="somevalue"

替换if (MyProperty is null)if (!MyPropertyChanged.HasDelegate)

于 2021-08-05T17:01:38.480 回答