私は角度ベースのアプリケーション(現在v4.4)を持っています。私は、コンポーネントが有限の回数だけ自分自身のインスタンスを表示し、次に最も低い「子」コンポーネントに、svgがあるビューを持っています。親コンポーネントのクリックイベントを発生せずに子コンポーネントをクリック
(click)
イベントを使用してクリックされた最小のコンポーネントを取り込めます。後続の各子コンポーネントが親の上に表示されるように、Z-インデックスを反復番号にリンクするように設定できると思ったので、その領域のどこかをクリックすると、正しいイベントが発生します。
私はこれをplunkrにdemoとしました。 svgをクリックしてもクリックされたイベントは発生しませんが、ボックス内の他の領域をクリックすると、そのボックスとそのすべての親に対してクリックされたイベントが発生します。
すべてのボックスの色を独立に切り替えることができるようにしたいと思います。ここで
は、私が持っているコンポーネントです。
@Component({
selector: 'my-app',
template: `
<div>
<h2>Hello {{name}}</h2>
<my-child [iteration]="0"></my-child>
</div>
`,
})
export class App {
name:string;
constructor() {
this.name = `Angular! v${VERSION.full}`
}
}
@Component({
selector: 'my-child',
template: `
<div class="border" [style.background]="toggle ? 'green' : 'pink'" (click)="clicked()">
{{iteration}}
<my-child [iteration]="iteration" *ngIf="iteration < 3"></my-child>
<object *ngIf="iteration == 3"
id="img" width="300" height="300"
data="http://snapsvg.io/assets/images/logo.svg"></object>
</div>
`,
})
export class Child {
name:string;
@Input() iteration;
toggle: boolean;
constructor() {
this.name = `Angular! v${VERSION.full}`
this.toggle = false;
}
ngOnInit() {
++this.iteration;
}
clicked(){
this.toggle = !this.toggle;
console.log(this.iteration)
}
}
はUPDATE:
現在の答えは、この質問の最初の部分に答えるが、SVGクリックがためにクリックイベントを発火ないに対処していませんsvgを表示するコンポーネント。
CSSソリューションを試しましたか?子のイベントトリガだけを必要とする場合、parentの 'pointer-events'は' none'になります。 –
@EmadEmami私は最終的に、クリックしたコンポーネントの反復値を使用してナビゲーションに使用したいので、角度イベントを発生させたいです –