小编CH4*_*H4B的帖子

(Storybook & Angular) 如何从模板动态更新参数

我在 Angular 应用程序中使用 Storybook,但遇到了问题args

我有一个名为“clicked”的参数,一旦单击按钮,它就会更新false为,请看一下:true

const Template: Story = (args) => ({
  props: args,
  template: `
    <button (click)="clicked = true">
      Default
    </button>
  `,
})

export const Primary = Template.bind({})
Primary.args = {
  clicked: false,
}
Run Code Online (Sandbox Code Playgroud)

此更新不是双向的,因为当查看插件页面时,即使模板已成功更新它,该值似乎也没有改变。主要问题是,当尝试通过访问该值时Interactions,该值永远不会更新,并且我的测试失败。

在此输入图像描述

所以,我的问题是 - 我可以以clicked控制选项卡也更新的方式进行更新吗?

angular storybook

5
推荐指数
1
解决办法
1249
查看次数

(角)使checkox禁用或启用&lt;mat-slide-toggle&gt;

我有一个用户列表供团队选择。假设我选择了一个用户,那么他在团队中可以是活跃的或不活跃的。现在,如果我根本不选择他,那么我应该既不能激活他,也不能使其失效。这是由复选框和滑块完成的,如下所示:

在此处输入图片说明

当我单击复选框时,我需要禁用切换。我尝试通过以下方式执行此操作:

$("#2048").prop('disabled', true);
Run Code Online (Sandbox Code Playgroud)

要么

document.querySelector('[name="' + '#2048' + '"]').disabled = true;
Run Code Online (Sandbox Code Playgroud)

也不起作用(是的,我知道ID不应该是数字,但这是因为每个切换都在* ngFor内。不过,我可以将它们用作数字,因为jQuery仍然可以选择它们)

无论哪种方式,我都坚信做到这一点的唯一方法是将“ disabled”属性数据绑定为一些返回“ true”或“ false”值的后端变量。

就像是:

<mat-slide-toggle 
[id]='data.id' 
class="status" 
[disabled]='disableVariable'
>Active
</mat-slide-toggle>
Run Code Online (Sandbox Code Playgroud)

然后:

disableVariable = someFunction(); //that returns true or false
Run Code Online (Sandbox Code Playgroud)

这行得通,但是变量太通用了,我的意思是,每个滑块都将被禁用。另一个问题是,这不是“实时”的,因此我无法多次禁用和启用。
基本上,它不起作用。

我在这里应该做什么?如果我有办法使用其唯一ID选择那些标签,那将解决问题,但是jQuery或Javascript的Query选择器都不能禁用或启用此标签。

编辑:

我的代码还有一点:

    <div id="table" *ngFor="let data of User; let i = index">

        <div [id]='data.id' *ngIf='data.user== 0' class="item">

            <label class="container" style="width: 90%">

                <input
                type="checkbox" 
                *ngIf='data.status== 0' 
                id={{i}} 
                class="checkbox" 
                color=primary
                checked>

                <span class="checkmark"></span>

                <div *ngIf='data.status== 0'>{{data.name}}

                    <mat-slide-toggle 
                    [id]='data.id' 
                    (change)=toggle(data.id) 
                    *ngIf='data.status== 0'
                    color=primary 
                    class="status" 
                    >Active
                    </mat-slide-toggle> …
Run Code Online (Sandbox Code Playgroud)

javascript angular-material angular

0
推荐指数
1
解决办法
2562
查看次数

标签 统计

angular ×2

angular-material ×1

javascript ×1

storybook ×1