angular - 操作完成后 Ngrx 重置表单输入

标签 angular redux ngrx

我有一个包含输入的dumb组件。当用户单击添加按钮时,我将发出带有文本的输出。智能组件获取事件并分派(dispatch)到商店。

操作完成后如何重置输入值?

@Component({
  selector: 'add-post',
  template: "<input #post>
             <button (click)="add.next(post.value)">Add</button>
"
})
export class AddPostComponent {
  @Output() addPost = new EventEmitter();
}

最佳答案

一种方法是实现重置方法并直接访问其父组件中的组件:

export class AddPostComponent {
    @ViewChild()
    post;

    public reset() {
        this.post.value = "";
    }

    // ...rest
}

在父模板中:

<add-post #addPost (addPost)="..."></add-post>

在父组件中:

class ParentComponent {
    @ViewChild()
    addPost: AddPostComponent;

    actionCompleteHandler() {
        this.addPost.reset();
    }

}

另一种方法是定义一个虚拟输入:

@Component({
  selector: 'add-post',
  template: "<input #post>
             <button (click)="add.next(post.value)">Add</button>
"
})
export class AddPostComponent {
  @ViewChild()
  post;

  @Input()
  public set reset(value: boolean) {
      if (value === true) {
          this.post.value = "";
      }
  }

  @Output() addPost = new EventEmitter();
}

然后将其与async结合使用:

<add-post [reset]="actionComplete$ | async"></add-post>

关于angular - 操作完成后 Ngrx 重置表单输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42469837/

相关文章:

angular - 什么时候使用 Ngzone.run()?

javascript - 2D 对象数组 - 传递引用副本时替换数组对象

angular - 函数在第二次调用时被记录

javascript - 在 React 中上传图像和其他文本输入?

angular - 对于使用 ngrx 存储在状态中的数组来说,多大才算太大?

angular - 类型 'automaticDataCollectionEnabled' 中缺少属性 'FirebaseApp'

javascript - 组件无法正确更新 View

javascript - 如何替换对象中键的值

javascript - 本地存储和ngrx存储

javascript - 如何在 ngrx/effect (redux-observable) 中分派(dispatch)多个 Action ?