我对Angular2和打字是新手。我试图从我的类中的构造函数获得对@input的访问权。一个服务是从构造函数内部调用的,我需要给它传递一个参数。
@Component({
selector:'side-menu',
templateUrl:'menu.html',
providers: [MenuService]
})
export class SideMenuComponent {
@Input() blockType;
menuItems
constructor(menuService:MenuService){
this.menuItems = menuService.getMenuItems(this.blockType); // Sends Undefined
this.menuItems = menuService.getMenuItems('HardCodedString'); //This works
}
}
@Injectable()
export class MenuService {
getMenuItems(type) {
console.log(type)
switch(type){
case 'Thing':
return [];
break;
case 'Otherthing':
return [];
break;
default:
return [];
}
}
}
调用构造函数时尚未设置输入。将构造函数代码移到ngoninit()
。
@Component({
selector:'side-menu',
templateUrl:'menu.html',
providers: [MenuService]
})
export class SideMenuComponent {
@Input() blockType;
menuItems
constructor(private menuService:MenuService){}
ngOnInit() {
this.menuItems = this.menuService.getMenuItems(this.blockType); // Sends Undefined
this.menuItems = this.menuService.getMenuItems('HardCodedString'); //This works
}
}
每次更新@input()
时,都会调用ngonchanges()
。ngonchanges()
在第一次调用ngonchanges()
之后调用ngoninit()。
问题内容: 我正在尝试创建一个将字段作为参数的构造函数,然后将其放入存储在超类中的字段中。这是我正在使用的代码 在超类中,我用 我有一个访问器方法 我收到一个错误“ 味道在超类中具有私有访问权 ”,但是我认为这无关紧要,因为我正在调用将其返回到字段的访问器方法? 问题答案: 您应该做什么: 在您的超类中添加一个构造函数: 在Crisps类中: 注释 对您的问题的一些评论: “在超类中,我已经用”
我在班里学习。出于好奇,我扩展了具有参数化构造函数的内部类。但是当我编写super(inti)来调用它时,代码不会编译。 因为内部类是外部类的一部分(成员),必须通过外部类访问它们。如何调用测试类的超级构造函数。 编译错误是:由于某些中间构造函数调用,没有外部类型的封闭实例可用
为什么下面没有编译: 如有需要,请提供更多详细信息: 我想将tmp传递给父构造函数
为什么第一个输出有柱线 = 空?是因为在创建类 B 之前调用了 B.foo() 吗?如果是,那么为什么可以调用 B.foo()?还是因为 B.foo() 中的字段栏试图从 A 获取柱线字段但无法访问它? 我的问题与链接的问题不同,我不是在问调用顺序,我是在问为什么第一个输出为空?另一个问题不是关于字段或空变量。 我不明白B.foo中的bar变量是如何为空的,如果它是在A和B中定义的。
问题内容: 如果我有一个像这样的抽象类: 还有一些从Item派生的类是这样的: 我不明白为什么我不能使用泛型调用构造函数: 我知道可以有一个没有构造函数的类型,但是这种情况是不可能的,因为Pencil具有没有参数的构造函数,而Item是抽象的。但是我从eclipse中得到了这个错误: 无法实例化 我不明白为什么的 T类型 ,以及如何避免这种情况? 问题答案: 无法使用Java类型系统来强制类层次结
我有一个类,它有一些属性/方法,返回最初通过构造函数传递的值: 人们建议用泛型作为打字稿的等价物: 现在我有了一个子类,它调用超类的构造函数并传递以下选项: TypeScript编译器对此不满意,希望通过类型扩展Base类。但是我有两次信息,在超级呼叫和扩展符号中。什么是正确的ts语法来解决我的问题? (键入脚本中的代码)