Javascript 从不同组件访问ControlValueAccessor

Javascript 从不同组件访问ControlValueAccessor,javascript,angular,typescript,angular2-forms,controlvalueaccessor,Javascript,Angular,Typescript,Angular2 Forms,Controlvalueaccessor,我有一个实现ControlValueAccessor的组件,但在理解正确的使用方法时遇到问题: import{Component,OnInit,forwardRef,Output,EventEmitter,OnChanges,Input,ViewChild}来自“@angular/core”; 从“@angular/forms”导入{NG_VALUE_访问器,ControlValueAccessor}; 从“../entities/UserOrEmail”导入{UserOrEmail}; 导出

我有一个实现
ControlValueAccessor
的组件,但在理解正确的使用方法时遇到问题:

import{Component,OnInit,forwardRef,Output,EventEmitter,OnChanges,Input,ViewChild}来自“@angular/core”;
从“@angular/forms”导入{NG_VALUE_访问器,ControlValueAccessor};
从“../entities/UserOrEmail”导入{UserOrEmail};
导出常量用户\输入\控制\值\访问器:任意={
提供:NG_值访问器,
//tslint:禁用下一行
useExisting:forwardRef(()=>AddUserOrEmailComponent),
多:是的,
};
常量noop=()=>{
//占位符操作
};
@组成部分({
选择器:“应用程序添加用户或电子邮件”,
templateUrl:'./添加用户或email.component.html',
提供者:[用户\输入\控制\值\访问器]
})
导出类AddUserOrEmailComponent实现OnInit、ControlValueAccessor{
@输入()
用户:any=UserOrEmail;
@输出()
更改:EventEmitter=新的EventEmitter();
用户:any=[];
恩戈尼尼特(){
此用户={
用户ID:'ull',
名称:“null”,
电子邮件:“空”
};
this.users=ConstantService.UserArray;
}
//#区域[值访问器接口]--------------------------------------------------------
//稍后提供的回调的占位符
//通过控制值访问器
私有onTouchedCallback:()=>void=noop;
private onChangeCallback:(quo:any)=>void=noop;
获取值():任意{
返回此.user;
}
//[ControlValueAccessor接口实现]-------------------------------------------
设定值(v:任意){
if(this.user!==v){
这个用户=v;
这是一个错误(v);
this.change.next(this.user);
}
}
writeValue(值:任意){
if(值!==this.user)
这个用户=值;
}
注册变更(fn:任何){
this.onChangeCallback=fn;
}
注册人(fn:任何){
this.onTouchedCallback=fn;
}

}
几周前,我在这方面遇到了问题,并用一个很好的例子进行了一次StackBlitz

希望这能帮助你


如果没有帮助,我也可以查看您的代码,但希望您可以将代码最小化到您遇到的问题,因为有一些文件需要查看。我最小化了代码,您可能可以查看它
AddUserOrEmailComponent
是我使用
ControlValueAccessor
的地方,
AddMilestoneModalComponent
是我想访问写在哪里的值的地方,但不知怎的,我无法让它工作。我想我在“AddMilestoneModalComponent”中遗漏了什么,但我不确定应该在那里添加什么。我设置它是为了重新创建它,但它似乎在这里工作。。。也许你可以改变stackblitz让我看看你看到了什么?我设置它是为了重新创建它,但它似乎在这里工作。。。也许你可以通过这次闪电战让我看看你看到了什么?