## @Tunnel
This decorator allows you to communication between instances of the same components/class.
For example, consider the following sibling components
```html
```
If you want them to be able to communicate using `@Tunnel` do
```typescript
@Component({ ... })
export class FooComponent implements ngOnInit {
@Tunnel() tunnel$;
constructor(private route: ActivatedRoute) {}
ngOnInit(): void {
this.tunnel$.subscribe(data => {
if (data.sender !== this) { ... }
});
}
doFooBarAction(): void {
this.tunnel$.next({sender: this, action: 'foobar'});
}
}
```
Note: It is required that the component has the `ngOnInit` implemented!
This decorator is not limited to sibling communication only, it goes straight through all routes!
If you want to see this in action, go to the [demo](https://stackblitz.com/edit/angular-tunnel?file=app%2Fblock%2Fblock.component.ts)