使用角度2.0.0-beta.8,我创建了一些扩展@Component装饰器的自定义装饰器。
要使我使用此代码:
import {..., View } from 'angular2/core';
...
export var MyCustomComponent:ComponentFactory =
<ComponentFactory>makeDecorator(MyCustomComponentMetadata, (fn:any) => fn.View = View);
现在,凭借角度2.0.0-beta.12,&#39; View&#39;装饰器已被删除,因此导入会抛出错误,因为&#39; angular2 / core&#39;没有导出的成员&#39;查看&#39;。
我应该如何创建自定义组件装饰器?
答案 0 :(得分:4)
你可以做到
private void showgridkirimulang()
{
con.Close();
con.Open();
MySqlCommand cmd = new MySqlCommand("SELECT NamaPasien, RiwayatPenyakit, AlamatPasien, UmurPasien, Jeniskelamin, NoHP, JmlKirimK, StatusDiabetes FROM datapasien WHERE JmlKirimK=1 AND StatusDiabetes='Ya'", con);
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
cmd.ExecuteNonQuery();
if (ds.Tables[0].Rows.Count > 0)
{
gridkirimulang.DataSource = ds.Tables[0];
gridkirimulang.Columns[0].HeaderText = "Nama Pasien";
gridkirimulang.Columns[1].HeaderText = "Riwayat Penyakit";
gridkirimulang.Columns[2].HeaderText = "Alamat Pasien";
gridkirimulang.Columns[3].HeaderText = "Umur Pasien";
gridkirimulang.Columns[4].HeaderText = "Jenis Kelamin";
gridkirimulang.Columns[5].HeaderText = "No. HP";
gridkirimulang.Columns[6].HeaderText = "Jumlah Pesan Terkirim";
gridkirimulang.Columns[7].HeaderText = "Status Diabetes";
gridkirimulang.MasterGridViewTemplate.BestFitColumns();
}
con.Close();
}
答案 1 :(得分:1)
Angular 6不再使用反射来定义组件的元数据。要覆盖内置的组件装饰器,您可以执行以下操作,
import { Component } from '@angular/core';
import componentRegistry from './ComponentRegistry';
function MyComponent(args: any = {}): (cls: any) => any {
const ngCompDecorator = Component(args);
return function (compType: any) {
ngCompDecorator(compType);
args.type && componentRegistry.register(args.type, compType, args.model);
}
}
export default MyComponent;
它们的元数据存储在组件的构造函数中的静态属性__annotations__
中。要了解更多信息,请检查here