在Angular 1.x中,您可以像这样定义常量:
angular.module('mainApp.config', [])
.constant('API_ENDPOINT', 'http://127.0.0.1:6666/api/')
Run Code Online (Sandbox Code Playgroud)
Angular2(使用Typescript)中的等价物是什么?我只是不想在我的所有服务中一遍又一遍地重复API基本URL.
我需要将后端URL传递给我的Angular2应用程序,因为生产和开发服务器托管在不同的位置.
我知道我可以在外部config.json中存储这些东西并在启动时加载.但是,在应用程序启动之前,这似乎是对服务器的不必要的额外调用.
或者,我现在做的是创建一个全局变量,我根据构建注入gulp.我的应用程序不是需要可重用的库我不相信我应该遇到意外的全球名称冲突.但这不是一个好习惯.
我想知道是否有第三个更好的解决方案?
我有一个下面定义的全局js变量(@Url是一个ASP.Net MVC html帮助器,它将转换为字符串值):
<script>
var rootVar = '@Url.Action("Index","Home",new { Area = ""}, null)';
System.import('app').catch(function(err){ console.error(err); });
</script>
Run Code Online (Sandbox Code Playgroud)
如何在angular2组件中访问rootVar?我曾经在角度1.5中使用窗口服务,在angular2中有类似的方法吗?
具体来说,我想使用该rootVar变量来帮助生成此组件中的templateUrl:
import { Component, Inject} from '@angular/core';
@Component({
selector: 'home-comp',
templateUrl: '../Home/Root'
})
export class HomeComponent {
constructor( ) { }
}
Run Code Online (Sandbox Code Playgroud) 我正在再次尝试将参数传递给我的应用程序.从RC5开始,我必须使用ngModule.(此解决方案:自从RC5以来,将asp.net服务器参数传递给Angular 2应用程序不再有效)
如何将参数传递给ngModule?
index.html的:
<script>
System.import('app').then(module => module.main('This is RIGHT'),
console.error.bind(console)
);
</script>
Run Code Online (Sandbox Code Playgroud)
main.ts:
import { browserDynamicPlatform } from '@angular/platform-browser-dynamic';
import { provide } from '@angular/core';
import { AppModule } from './app.module';
export function main(test: string) {
browserDynamicPlatform().bootstrapModule(AppModule, [{ providers: provide('Test', { useValue: test, }) }]);
}
Run Code Online (Sandbox Code Playgroud)
app.module.ts
import { NgModule, provide } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
@NgModule({
imports: [
BrowserModule
],
declarations: [ …Run Code Online (Sandbox Code Playgroud) 我正在使用ASP.Net来渲染我的Angular 2应用程序,而我唯一的RAZOR页面是_Layout.cshtml,我希望能够将一些初始数据从RAZOR传递到我的自举组件中,但它不会似乎工作.
在我的_Layout.cshtml中,我有以下内容:
<my-app test="abc"></my-app>
Run Code Online (Sandbox Code Playgroud)
在我的app.component.ts中,我有:
import { Component, Input } from "@angular/core";
@Component({
selector: 'my-app',
template: "<div id='mainBody'>Test:{{test}}</div>",
directives: [MenuBarComponent, ROUTER_DIRECTIVES]
})
export class AppComponent {
@Input() test;
}
Run Code Online (Sandbox Code Playgroud)
我的测试变量是空白的.有没有不同的方法来做到这一点,还是只是不可能?