Angular 是否可以将数据从一个指令传递到另一个指令?

Angular 是否可以将数据从一个指令传递到另一个指令?,angular,angular2-directives,Angular,Angular2 Directives,我创建了两个指令。一个是处理模式弹出的事件,另一个是处理自定义工具提示事件。现在我需要做的就是将数据从模态指令传递到工具提示指令。我试过谷歌搜索,但没有得到任何有用的东西。那么,真的有什么方法可以将值从一个指令传递到另一个指令吗 工具提示指令如下所示: import{Directive,ElementRef,Input,HostListener,Renderer,ViewChild}来自“@angular/core”; 从“../../models/ReportModel”导入{ReportMo

我创建了两个指令。一个是处理模式弹出的事件,另一个是处理自定义工具提示事件。现在我需要做的就是将数据从模态指令传递到工具提示指令。我试过谷歌搜索,但没有得到任何有用的东西。那么,真的有什么方法可以将值从一个指令传递到另一个指令吗

工具提示指令如下所示:

import{Directive,ElementRef,Input,HostListener,Renderer,ViewChild}来自“@angular/core”;
从“../../models/ReportModel”导入{ReportModel};
//从“../../models/FormFieldModel”导入{FormFieldModel};
从“../../models/FrameworkElementFormFieldModel”导入{FormFieldModel};
@指令(
{
选择器:“[工具提示]”
}
)
导出类TooltipDirective{
构造函数(public el:ElementRef,public renderer:renderer){}
tooltipTitle:any='';
tooltipText:any='';
工具提示图像:任意=“”;
isFormFieldModel:boolean=false;
@Input()dataContext:any=新的ReportModel();
@Input()IsButtonPanel:boolean=false;
专用鼠标顶:数字=0;
专用鼠标左键:数字=0;
tooltipTop:number=0;
工具提示左:数字=0;
@HostListener('click')onclick(){
这个。悬停(错误);
}
@mouseenter(事件:MouseEvent){debugger上的HostListener('mouseenter',['$event'])
这个。悬停(错误);
如果(this.mainDiv!=null){
this.mainDiv.remove();
此.ImgElement.remove();
}
this.mouseLeft=event.clientX;
this.mouseTop=event.clientY;
if(this.dataContext!=null){
this.tooltipText=this.dataContext.Description;
if(this.dataContext instanceof FormFieldModel){
this.isFormFieldModel=true;
}
if(此.isFormFieldModel){
如果(!this.dataContext.IsShowToolTip){
返回;
}
this.tooltipTitle=this.dataContext.PrettyName;
}
否则{
this.tooltipTitle=this.dataContext.Header;
this.tooltipImage=this.dataContext.Icon;
}
如果(this.tooltipTitle=''| | this.tooltipTitle==null | | this.tooltipTitle=='null'){
this.tooltipTitle=“Header”;
}
if(this.tooltipText==null | | this.tooltipText==null){
this.tooltipText=“”;
}
if(this.tooltipImage=''| | this.tooltipImage=='null'){
this.tooltipImage=“info.png”;
}
这个。悬停(true);
}
}
@HostListener('mouseleave')onMouseLeave(){
这个。悬停(错误);
}
@HostListener('focusin')onFocus(){
如果(this.mainDiv!=null){
this.mainDiv.remove();
此.ImgElement.remove();
}
this.mouseLeft=this.el.nativeElement.getBoundingClientRect().left;
this.mouseTop=this.el.nativeElement.getBoundingClientRect().top;
if(this.dataContext!=null){
this.tooltipText=this.dataContext.Description;
if(this.dataContext instanceof FormFieldModel){
this.isFormFieldModel=true;
}
if(此.isFormFieldModel){
如果(!this.dataContext.IsShowToolTip){
返回;
}
this.tooltipTitle=this.dataContext.PrettyName;
}
否则{
this.tooltipTitle=this.dataContext.Header;
this.tooltipImage=this.dataContext.Icon;
}
如果(this.tooltipTitle=''| | this.tooltipTitle==null | | this.tooltipTitle=='null'){
this.tooltipTitle=“Header”;
}
if(this.tooltipText==null | | this.tooltipText==null){
this.tooltipText=“”;
}
if(this.tooltipImage=''| | this.tooltipImage=='null'){
this.tooltipImage=“info.png”;
}
这个。悬停(true);
}
}
@HostListener('focusout')onFocusout(目标){
这个。悬停(错误);
}
//@HostListener('文档:mousemove',['$event']))
//onMouseMove(事件:MouseEvent){
//this.mouseLeft=event.clientX;
//this.mouseTop=event.clientY;
//}
mainDiv:any;ImgElement:any;InputElement:any;divElement:any;divElement1:any;divElement2:any;
悬停(onmousehave:boolean){debugger
如果(onmousehave&!this.IsButtonPanel){debugger
//动态创建Img元素
//删除现有工具提示
让tooltipItem=this.el.nativeElement.getElementsByClassName(“tooltipMain”)[0];
如果(工具提示项!=null){
tooltipItem.outerHTML='';
}
其他的
{
tooltipItem=this.el.nativeElement.nextElementSibling;
if(tooltipItem!=null&&tooltipItem.className.indexOf(“tooltipMain”)>=0)
{
tooltipItem.outerHTML='';
}
}
this.ImgElement=this.renderer.createElement(this.el.nativeElement,“img”);
this.renderer.setElementAttribute(this.ImgElement,“src”,“images/”+this.tooltipImage);
//如果(this.tooltipImage==''){
//this.renderer.setElementAttribute(this.ImgElement,“src”,“images/info.png”);
//}
//否则{
//this.renderer.setElementAttribute(this.ImgElement,“src”,“images/”+this.tooltipImage);
//}
this.renderer.setElementStyle(this.ImgElement,“宽度”,“40px”);
this.renderer.setElementStyle(this.ImgElement,“高度”,“40px”);
this.renderer.setElementStyle(this.ImgElement,“右边距”,“2px”);
this.renderer.setElementStyle(this.ImgElement,“float”,“left”);
this.renderer.setElementStyle(this.ImgElement,“border”,“1px solid#CCC”);
this.renderer.setElementStyle(this.ImgElement,“边界半径”,“5px”);
this.renderer.setElementStyle(this.ImgElement,“padding”,“5px”);
this.renderer.setElementStyle(this.ImgElement,“backgroundColor”,“#f5”);
//工具提示文本外部div
this.divElement=this.renderer.createElement(this.el.nativeElement,“div”);
这是塞特勒曼