从组件内部发射到超级组件

问题描述

我有这个组件,其中有一个名为plaidLinkSuccess的@output发射器,我正尝试在LinkHandler接口的onSuccess回调函数中发射它,如下所示。现在,我已经调试了它,它确实击中了onSuccess()中的发射器,但是PlaidComponent的父级什么也没捡到。

PlaidComponent.ts

@Component({
  selector: 'test-plaid',templateUrl: './plaid.component.html',styleUrls: ['./plaid.component.scss'],})
export class PlaidComponent implements OnInit {
  @Output()
  static plaidLinkSuccess = new EventEmitter<any>();

  @input()
  plaidLinkToken: string;
  plaidResponse = false;
  env = 'sandBox'; // todo
  handler: LinkHandler;
  constructor() {}

  ngOnInit() {
    this.handler = Plaid.create({
      clientName: 'JJInc',// todo
      env: this.env,token: this.plaidLinkToken,product: ['auth'],onLoad() {},onSuccess(public_token,Metadata) {
        console.log(public_token);
        console.log(Metadata);
        PlaidComponent.plaidLinkSuccess.emit({
          publicToken: public_token,accountId: Metadata.account.id,});
      },onExit(err,Metadata) {
        console.log(err);
        // The user exited the Link flow.
        if (err != null) {
          // bankAccountInfoPlaidComponent.logError(err);
        }
      },});
  }

  onPlaidClick(event) {
    event.preventDefault();
    event.stopPropagation();
    this.linkHandler();
  }

  linkHandler() {
    this.handler.open();
  }
}

PlaidComponents的父HTML:

<ng-container *ngIf="isPlaid">
   <test-plaid
    [form]="plaidLinkToken"
     [plaidLinkToken]="plaidLinkToken$ | async"
     (plaidLinkSuccess)="plaidExchangetoken($event)"
   ></test-plaid>
 </ng-container>

declarations.d.ts


declare const Plaid: PlaidLink;

interface PlaidLink {
  create: (config: LinkConfig) => LinkHandler;
  readonly version: string;
}

interface LinkHandler {
  open: (institution?: string) => void;
  exit: (config?: LinkHandlerExitConfig) => void;
}

interface LinkConfig {
  clientName: string;
  env: string;
  forceIframe?: boolean;
  isWebView?: boolean;
  product: string[];
  selectAccount?: boolean;
  token?: string;
  webhook?: string;
  onLoad: () => void;
  onExit: (error: LinkOnExitError,Metadata: LinkOnExitMetadata) => void;
  onSuccess: (public_token: string,Metadata: LinkOnSuccessMetadata) => void;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)