【发布时间】:2018-01-08 20:18:20
【问题描述】:
我试图让一个组件中的按钮单击以将焦点放在另一个组件上的元素上。 (坦率地说,我不明白为什么这一定如此复杂,但我无法实现任何实际可行的更简单的方法。)
我正在使用一项服务。除了 点击发生之外,它不需要传递任何数据。我不确定监听组件是如何响应事件的。
app.component:
跳到主要内容
import { Component } from '@angular/core';
import { SkipToContentService } from './services/skip-to-content.service';
export class AppComponent {
constructor(
private skipToContent: SkipToContentService
) {}
}
skipLink() {
this.skipToContent.setClicked();
}
}
登录组件:
<input type="text" name="username" />
import { Component, OnInit } from '@angular/core';
import { SkipToContentService } from '../../../services/skip-to-content.service';
export class BaseLoginComponent implements OnInit {
constructor(
private skipToContent: SkipToContentService
) {
}
ngOnInit() {
this.skipToContent.skipClicked.subscribe(
console.log("!")
// should put focus() on input
);
}
}
跳转到内容服务:
import { Injectable, EventEmitter } from '@angular/core';
@Injectable()
export class SkipToContentService {
skipClicked: EventEmitter<boolean> = new EventEmitter();
constructor() {
}
setClicked() {
console.log('clicked');
this.skipClicked.emit();
};
}
我有点不知道登录将如何“听到”skipClicked 事件。
【问题讨论】:
-
您不应该在您的服务stackoverflow.com/questions/36076700/… 中使用
EventEmitter。并使用共享服务来广播事件:angular.io/guide/…
标签: angular service eventemitter