I am using the final release of Angular 2.0.
What do I want to do? - I want to show some notifications (warnings, requirements for input) only when the focus is on receiving input. Or even better, when its parent ( the div ) has a mouse hover event.
Doing this from the parent (div) is easy. Just (focus) = showNotifications () + ngIf - and the job is done.
But I want to encapsulate this functionality inside the show-notifications component and make it reusable.
Given that I skip the control inside notification shows using @Input() - I could get around this if I have access to the native HTML input element . You can see how in show-notifications.component.ts . Here is the code:
app.component.html:
`<div> <label>Name: </label> <input formControlName="myName"> <show-notifications [the_control]="myName" ></show-notifications> </div>`
app.component.ts:
export class AppComponent { myName = new FormControl("defaultvalue",[some validators..]) }
Show-notifications.component.html:
<div class="show_requirements" *ngIf="hasfocus or parentDivHasMouseHover">
show-notifications.component.ts:
export class ShowNotificationsComponent { @Input() the_control; this.thisInputRequirements =
Question:
How to access my own element, given that I have a formControl object (myName = the_control)?
Is there a better way to make notifications in a separate component - and make it reusable? I have already successfully used this application in my entire application - to show errors and input requirements.
Note. I tried to pass the html input of the hole first, using the hashtag (#myInput) syntax and form it inside the show-notifications component that I tried to do: myInput.myName - to access the control, but I get undefined. The controls are missing from the original input element. And I need this control to check :)