Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从角度视图中的另一个组件禁用表单字段_Javascript_Angular_Forms_Angular Material - Fatal编程技术网

Javascript 从角度视图中的另一个组件禁用表单字段

Javascript 从角度视图中的另一个组件禁用表单字段,javascript,angular,forms,angular-material,Javascript,Angular,Forms,Angular Material,我有三个基于角材料的单选按钮,即男按钮、女按钮和其他按钮。这三个字段存在于一个组件中,我在另一个名为page1的组件中也有三个表单字段,即a、B、C。当我按下男性单选按钮并转到page1组件时,page1组件中的表单字段A和B应该不可见。当我按下女性或其他单选按钮时,page1组件中的所有三个表单字段都应该存在。我试了一天,但都没用。如果你知道,请帮忙 注意:我使用角材质(mat form字段和mat单选按钮)进行此操作。在stackblitz中,我无法安装这些,所以请以棱角材料的方式安装 我已

我有三个基于角材料的单选按钮,即男按钮、女按钮和其他按钮。这三个字段存在于一个组件中,我在另一个名为page1的组件中也有三个表单字段,即a、B、C。当我按下男性单选按钮并转到page1组件时,page1组件中的表单字段A和B应该不可见。当我按下女性或其他单选按钮时,page1组件中的所有三个表单字段都应该存在。我试了一天,但都没用。如果你知道,请帮忙

注意:我使用角材质(mat form字段和mat单选按钮)进行此操作。在stackblitz中,我无法安装这些,所以请以棱角材料的方式安装

我已附上stackblitz链接示例:

您可以使用BehaviorSubject或Subject来触发函数调用

TriggerService.ts

import { Injectable } from "@angular/core";
import { BehaviorSubject } from "rxjs/internal/BehaviorSubject";

@Injectable()
export class TriggerService {
  constructor() {}
  private _trigger = new BehaviorSubject<string>("");
  castTrigger = this._trigger.asObservable();

  trigger(value) {
    this._trigger.next(value);
  }
}
child.component.ts

export class AppComponent {
  constructor(private triggerService: TriggerService) {
    document.title = "Home";
  }

  changeType(value) {
    this.triggerService.trigger(value);
  }
}
ngOnInit() {
  this.triggerService.castTrigger.subscribe(value => {
    this._type = value;
  });
}

创建一个
getter setter
方法或在您的服务中使用
subject
。并根据预期的行为在不同的组件中使用该值。你能在stackblitz链接中这样做吗?不,我告诉过你该过程尝试实现它。如果您在实施后发现任何问题,请提出单独的问题。本论坛不是为他人编写代码的论坛。有没有更简单的方法?对不起,我不知道其他方法,如果父模板中提到了子组件,那么我们将类型作为@Input传递给子组件