我正在构建一个版本为beta.8的Angular 2应用程序.
在这个应用程序中,我有一个实现OnInit的组件.
在这个组件中我有函数ngOnInit,但从不调用ngOnInit函数.
import { Component, OnInit } from 'angular2/core';
@Component({
templateUrl: '/app/html/overview.html'
})
export class OverviewComponent implements OnInit {
ngOnInit() {
console.log('ngOnInit');
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序的路由:
@RouteConfig([
{
path: '/overview',
name: 'Overview',
component: OverviewComponent
},
{
path: '/login',
name: 'Login',
component: LoginComponent
},
{
path: '/register',
name: 'Register',
component: RegisterComponent,
useAsDefault: true
}
])
Run Code Online (Sandbox Code Playgroud)
检查用户是否已登录LoginComponent和RegisterComponent.
如果用户已登录,则组件将使用以下方式重定向到Overview : router.navigate(['Overview']).
如果我使用Overview路由作为默认路由,我会在控制台中看到ngOnInit.
所以我重定向我的页面的方式似乎是问题.
如何重定向到Overview页面并调用ngOnInit函数?
无论是RegisterComponent和LoginComponent使用
ngOnInit() {
this._browser.getStorageValue('api_key', api_key => {
if (api_key) {
this._browser.gotoMain();
}
}) …Run Code Online (Sandbox Code Playgroud) 我正在用 C 为微控制器编程,所以我不确定这个问题是属于这里还是属于电子堆栈交换。如果它不适合这里,请告诉我,我会将问题移到那里。
所以我在 C 中有有限状态机。这个 FSM 负责通过 UART 检索数据。每个状态检索一些数据并对其执行一些检查。每个状态都有三个可能的方向。如果接收到的数据有效,它将进入下一个状态。如果不是,它将重复其状态。如果该状态已重复一定次数,它将进入失败状态。为了说明这一点方向的状态返回代码:ok,err或repeat。这适用于除最后一个之外的所有状态。在这里调用时,return repeat我可以看到调试器转到该语句,然后最后检查它}函数,然后它转到内存中的随机位置,我只能在 Code Composer Studio 的反汇编视图中看到。有时这是 0x0 有时它是我看不到的 RAM 中的随机内存。
什么会导致这种奇怪的行为?我在 Code Composer Studio 中关闭了优化选项。
所有州都有这样的机构:
enum ret_codes fc_state(void) {
uint8_t buf[250];
static uint8_t fail_counter = 0;
const uint8_t max_tries = 5;
int ret = 0;
while (ret == 0) {
ret = UART_read(_uart, buf, sizeof(buf));
}
if (ret == UART_STATUS_ERROR) {
return err;
}
/*
perform tests on buf ... …Run Code Online (Sandbox Code Playgroud)