将angular2更新为angular4后的编译问题

时间:2017-08-22 07:20:46

标签: angular angular-cli angular-aot

更新版本的angular4从2开始,在编译时收到以下错误。

在静态解析符号值时遇到错误。不支持函数调用。考虑使用对导出函数的引用替换函数或lambda

provideAuth({
    tokenName: 'token',
    tokenGetter: () => localStorage.getItem('token') 
})

2 个答案:

答案 0 :(得分:0)

尝试在分配变量之前将变量存储在变量上,如下所示:

if ( yourEditText.getText().toString().equal("")) {
           Toast.makeText(getApplicationContext(), "Please Give Some Input", Toast.LENGTH_SHORT).show();
    }

答案 1 :(得分:0)

这是因为您正在使用AOT编译进行编译(这是一件好事,但有一些限制)。

在这种情况下,因为AOT不支持提供程序设置中的lambda函数。见the AOT documentation。要解决此问题,只需使用命名并导出函数替换lambda:

export function getToken() { localStorage.getItem('token'); }

然后引用它:

provideAuth({
    tokenName: 'token',
    tokenGetter: getToken
})

AOT编译还有很多其他问题,其中很多都列在这里:https://medium.com/spektrakel-blog/angular-writing-aot-friendly-applications-7b64c8afbe3f

当然,您可以通过省略--aot命令中的ng build参数来选择编译而不 AOT。但这会导致更大,更慢的应用程序。