如何解决从 Angular 中的另一个组件调用函数
form.component.ts
import { Component,Injectable } from '@angular/core'
@Injectable({
providedIn: 'root',})
@Component({
selector: 'cui-nt-form',templateUrl: './form.component.html',styleUrls: ['./form.component.scss'],})
export class NtFormComponent {
showForm: boolean = false
constructor() {
document.addEventListener('keydown',this.handleKeyDownForm.bind(this),false)
}
public setVisibleForm() {
console.log('Form Showing');
this.showForm = true
}
setHiddenForm() {
this.showForm = false
}
handleKeyDownForm(event: any) {
if (this.showForm) {
const key = event.keyCode.toString()
if (key === '27') {
this.setHiddenForm()
}
}
}
}
form.component.html
<div class="d-inline-block mr-4">
<!-- <button nz-button (click)="setVisibleForm()" nzType="primary">Primary Buttonn</button> -->
<div class="liveForm" [ngClass]="{'liveformVisible': showForm}">
<button class="close" type="button" (click)="setHiddenForm()">
<i class="icmn-cross"></i>
</button>
<h5>test form</h5>
</div>
</div>
form.component.scss
....
.liveformVisible {
opacity: 1;
visibility: visible;
}
....
当我单独放置这个组件并触发按钮时,它工作正常。但是,当我在另一个组件中调用它时,该函数可以工作但没有显示。我调用该函数的另一个组件是 ;
dynamic.component.ts
import { Component,NgModule,OnInit,ViewChild } from '@angular/core'
import { ActivatedRoute } from '@angular/router'
import { NtFormComponent } from 'src/app/components/layout/Forms/form.component'
@Component({
selector: 'kit-antd-table-dynamic',templateUrl: './dynamic.component.html',styles: [
`
.components-table-demo-control-bar {
margin-bottom: 12px;
}
.nz-form-item {
margin-right: 16px;
margin-bottom: 8px;
}
`,],})
export class KitAntdTableDynamicComponent implements OnInit {
showForm: boolean = false
constructor(
private route: ActivatedRoute,private formComponent:NtFormComponent
){}
....
formVisible(){
this.formComponent.setVisibleForm();
}
....
}
dynamic.component.html
<a (click)="formVisible()">Action</a>
我正在使用console.log('表单显示')来测试该函数在form.component.ts 中是否有效。这有效,但表格不可见。我看不到的问题是什么?谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。