考虑到我有简单的app
组件:
import {Component} from 'angular2/core';
import {bootstrap} from 'angular2/platform/browser';
import {AppComponent} from 'ng2-easy-table/app/app.component';
import {ConfigService} from "./config-service";
@Component({
selector: 'app',
directives: [AppComponent],
providers: [ConfigService],
template: `
<ng2-table [configuration]="configuration"></ng2-table>
`
})
export class App {
constructor(private configuration:ConfigService) {}
}
bootstrap(App, []);
和ng2-table
,它是通过npm install
安装的,并放在node_modules
目录中。
import {Component, OnInit, Input} from 'angular2/core';
@Component({
selector: 'ng2-table',
})
export class AppComponent implements OnInit{
@Input configuration;
constructor() {
console.log("configuration: ", this.configuration); // <-- null
}
ngOnInit() {
console.log("configuration: ", this.configuration); // <-- null
}
}
这个配置服务:
import {Injectable} from "angular2/core";
@Injectable()
export class ConfigService {
public searchEnabled = true;
public orderEnabled = true;
public globalSearchEnabled = true;
public footerEnabled = false;
public paginationEnabled = false;
public exportEnabled = true;
public resourceUrl = "http://beta.json-generator.com/api/json/get/E164yBM0l";
}
在app
组件中,我放置了ng2-table
组件。ng2-table
和app
是根组件,所以我不允许使用@Input()
(这就是[configuration]="configuration"
不能工作的原因(按照这个答案https://stackoverflow.com/a/33155688/1168786)。
问题是--如何将一些服务从app
组件注入到ng2-table
组件中,但不使用@Input()
。
如何将一些配置传递给我的ng2-table
,甚至更简单,如何从node_modules
初始化组件,这需要构造函数中的一些配置?
这是组件链接:https://github.com/ssuperczynski/ng2-easy-table/tree/master/app
发布于 2016-04-11 17:08:02
发布于 2016-04-09 15:29:53
发布于 2016-04-09 15:20:46
这一行似乎不正确,因为我猜您想要计算configuration
表达式:
<ng2-table [configuration]="'configuration'"></ng2-table>
我会使用以下方法来代替
<ng2-table [configuration]="configuration"></ng2-table>
此外,我将以这样的方式注入您的服务(如果它实际上是一个服务):
(...)
import {ConfigService} from "./config-service";
export class App {
constructor(private configuration: ConfigService) {
}
}
https://stackoverflow.com/questions/36518422
复制相似问题