如何从@Input参数中访问parent参数,该参数在子类中是parent
How to access parent parameter from @Input parameter that in parent in child class Angular 2
我有父组件类:
import {Component, OnInit, Input} from '@angular/core';
@Component({
})
export abstract class AbstractBlock{
//Входящие данные
@Input() config: any;
getConfig()
{
return this.config;
}
}
和继承它的子类:
import {Component, Input, OnInit} from '@angular/core';
import { BannersService } from "../../modelservices/catalog/bannersservice";
import { BannerItem } from "../../modelservices/catalog/items/banner";
import {AbstractBlock} from "../abstractblock";
@Component({
selector: 'blocks-banners-slideshow', //Селектор
templateUrl: 'build/templates/default/blocks/banners/slideshow.html', //Шаблон
styleUrls: [ //Свои стили
'resource/default/css/banners/slideshow.css'
],
providers: [
BannersService
] //Нужные API
})
export class BannersSlideShow extends AbstractBlock implements OnInit{
list: Array<BannerItem>;
mySlideOptions: any;
@Input() slideOptions = {};
constructor(
private bannersService: BannersService
){
super();
}
ngOnInit()
{
this.list = [];
this.mySlideOptions = this.slideOptions;
console.log(this.getConfig());
console.log(this.config);
// this.getItems(); //Подгружим список
}
getItems()
{
this.bannersService.add(this.config['zone'], {
title: 'Привет, медвед',
url: 'http://example.com/banner.jpg'
});
this.bannersService.add(this.config['zone'], {
title: 'Привет, медвед 2',
url: 'http://example.com/banner.jpg'
});
this.list = this.bannersService.getList(this.config['zone']);
}
}
所以我想访问在子类配置属性。控制台日志显示未定义的属性,但父模板是:
<ion-content>
<blocks-banners-slideshow #block class="contentBlock" [config]="{zone: 'main'}" [slideOptions]="{loop: true}"></blocks-banners-slideshow>
</ion-content>
value为Object。怎么了?
更新tripwire
现在可以利用组件的对象继承。
见也——https://github.com/angular/angular/commit/f5c8e0989d85bc064f689fc3595207dfb29413f4
旧版本Angular2不支持完全继承
- https://github.com/angular/angular/issues/7968 issuecomment - 219865739
function InheritPropMetadata() {
return (target: Function) => {
const targetProps = Reflect.getMetadata('propMetadata', target);
const parentTarget = Object.getPrototypeOf(target.prototype).constructor;
const parentProps = Reflect.getMetadata('propMetadata', parentTarget);
const mergedProps = Object.assign(targetProps, parentProps);
Reflect.defineMetadata('propMetadata', mergedProps, target);
};
};
并像这样使用:
@InheritPropMetadata()
export class BannersSlideShow extends AbstractBlock implements OnInit{
<<p> 恰好例子/strong> 见也绑定和@ViewChild
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 使用Express捕获参数
- 参数变量出现ngTable指令问题
- AngularJS:我可以跳过函数参数回调吗
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 要求未定义JS回调参数
- 我的jQuery插件参数没有正确启动,遇到了问题
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- jquery设置为使用参数运行
- Javascript”;类“;带有参数的扩展
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 函数未将值作为参数传递
- 如何将参数传递到angularJs中的工厂
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- MVC 3页面导航和使用javascript传递参数
- 从查询字符串参数推断出正确的数据类型
- 传递包含'%的参数'在URL中
- 如何从@Input参数中访问parent参数,该参数在子类中是parent
- 运行Child's Onclick,但不要运行Parent's Where参数被传递