在Angular的jQuery事件监听器中使用注入的依赖项

时间:2018-09-16 18:13:40

标签: javascript angular scope

我正在Angular 6中使用Bootstrap 4模态,一旦模态关闭,我想将用户重定向到另一条路线。但是,当模式关闭时,我遇到了一个范围界定问题,告诉我我注入的路由器未定义。

我的代码:

import { Component, OnInit } from '@angular/core';

declare var $: any


@Component({
    selector: 'app-modal',
    templateUrl: './modal.component.html',
    styleUrls: ['./modal.component.css']
})
export class ModalComponent implements OnInit {
    constructor(
        public router: Router
    ) {}

    ngOnInit() {}

    ngAfterViewInit() {
        $('#mymodal').on('hidden.bs.modal', function (e) {
            router.navigate(['/']) //tells me that router is undefined
        })
    }
}

2 个答案:

答案 0 :(得分:1)

使用this作为插入依赖项来访问router,并使用箭头函数语法((e) => {}将其重新界定为正确的范围。像这样:

ngAfterViewInit() {
  $('#mymodal').on('hidden.bs.modal', (e) => {
    this.router.navigate(['/']);
  })
}

答案 1 :(得分:1)

使用this中的Jquery关键字。

ngAfterViewInit() {
var self = this;
    $('#mymodal').on('hidden.bs.modal', function (e) {
        self.router.navigate(['/']);
    })
}