storybook 在Angular组件上,除非明确传递,否则可选的数字属性最终会变成'NaN',

ccgok5k5  于 2个月前  发布在  Angular
关注(0)|答案(2)|浏览(29)

在为我们的Angular组件创建故事时,我们有一系列可选的数值属性:

@Component(...)
export class MyComponent {
   @Input() name: string;
   @Input() min?: number;
   @Input() max?: number;
}

如果在args中未定义这些可选参数,我们会看到控制台错误和警告: The specificed value "NaN" cannot be parsed, or is out of range. ,并且字符串 "NaN" 被传递到Angular组件中:
故事:

export const Default: { args: MyComponent } = {
    args: {
       name: 'Foo',
    }
};

开发者工具元素:

<ng-input ng-reflect-min="NaN" ng-reflect-max="NaN"></ng-input>

当我们明确将 undefined 作为故事中的最小/最大属性时,这些错误就会消失:

export const Default: { args: MyComponent } = {
      args: {
            name: 'Foo',
            min: undefined,
            max: undefined,
      }
}

显而易见的解决方法是将最小/最大值作为默认参数的一部分传递,但似乎有点hacky,因为不得不显式地undefined 传递给一个按定义未定义的属性。

pw136qt2

pw136qt21#

我正在面临类似的问题。故事书正在修改组件的公共属性,将其设置为NaN等。

piah890a

piah890a2#

@denchp 最新的7.0测试版中,这个问题还存在吗?

相关问题