每次改变路线时都会调用ngOnInit

时间:2017-07-21 14:07:05

标签: javascript angular

我有一个控制器实现OnInit 这里的问题是每当我改变路线并回到相同的组件时,每次都会调用ngOnInit。我做错了什么我无法理解。任何人请帮助我。

@Component({
    selector:'test-list',
    templateUrl:'./testlist.component.html',
    styles:[`.testname{
        text-transform : capitalize;
    }`]
})
export class TestListComponent implements OnInit{
    testList:Array<Test>;
    constructor(private testService:TestService,private router:Router){}
    ngOnInit(){
        this.testService.getTest()
        .subscribe(
            data=>this.testList = <Array<Test>>data,
            error=>alert(error)
        );
        console.log("ngInit")
    }
    editTest = (id)=>{
        this.router.navigate(['createtest',id]);
    }
}

2 个答案:

答案 0 :(得分:0)

每次加载组件时都会执行

{{1}}。它不需要被调用。这是一个生命周期钩子,用于做初始的东西。您可以了解有关角度生命周期钩子的更多信息 here

答案 1 :(得分:0)

如果在构造函数中您订阅了活动路由,则每次路由器导航到该页面时都会调用ngInit。

constructor(
    private route: ActivatedRoute,
    private router: Router
) {
    this.route.queryParams.subscribe(async (params) => {
        if (this.router.getCurrentNavigation().extras.state) {
            // TODO save the params
        }
    });
}

ngOnInit(){
    console.log('ngOnInit called');
}