我希望一个组件将输入发送到另一个组件。下面是代码.ts和.html。这两个组成部分中的一个 现在的问题是父组件的html页面还显示了子组件的html部分……我希望该组件仅将一个字符串传递给子组件
Parent.ts
import ...
@Component({
selector: 'app-parent',
templateUrl: './parent.html',
styleUrls: ['./parent.css']
})
export class ParentComponent implements OnInit {
sostegno : string;
constructor() { }
ngOnInit() { }
avvia1() {
this.sostegno = "xxx";
this.router.navigate(['./xxx'], { relativeTo: this.route });
}
avvia2()
this.sostegno = "yyy";
this.router.navigate(['./yyy'], { relativeTo: this.route });
}
}
Parent.html
<div>
...
</div>
<app-child [sostegno]="sostegno"></app-child>
Child.ts
import ...
@Component({
selector: 'app-child',
templateUrl: './child.html',
styleUrls: ['./child.css']
})
export class ChildComponent implements OnInit {
@Input() sostegno : string;
constructor() { }
ngOnInit() {
console.log(this.sostegno);
}
}
答案 0 :(得分:1)
您需要进行一些更改,因为查看您当前拥有的代码似乎不完整。
您正在使用this.router
,而没有在构造函数中注入Router class。
您正在使用this.route
,而没有在构造函数中注入ActivatedRoute class。
要测试您的父代>子代互动是否正常,您可以删除参数,然后对html进行测试
<app-child [sostegno]="'Test'"></app-child>
这应该适用于您的子组件内部的ngOnInit
函数。如果此方法奏效,那么您现在要做的就是在父组件中初始化sostegno
,否则在子组件中调用avvia1
或avvia2
时子组件中的控制台日志将不反映更改。你的父母班。
希望这会有所帮助!