Угловой доступ 5 DOM в дочернем компоненте всегда возвращает неопределенное - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь получить доступ к DOM в дочернем компоненте, чтобы автоматически отправить форму, я пытался использовать viewChild, но она всегда возвращает undefined.

Мои маршруты выглядят так, чтобы получить доступдочерний компонент, необходимо предоставить действительный токен.

   const routes: Routes = [{
         path: '',
         redirectTo: '',
         pathMatch: 'full'
     },
     {
         path: 'auth',
         children: [{
                 path: '',
                 loadChildren: 'app/auth/auth.module#AuthModule'

             },
             {
                 path: ':token/:id',
                 loadChildren: 'app/token/token.module#TokenModule',
                 canActivateChild: [AuthGuardService]
             }

         ]
     }
 ];

App.html

   <nav>
    <a routerLink="auth">Auth</a>
</nav>


<router-outlet></router-outlet>

дочерний компонент

@ViewChild('payForm') PayForm: ElementRef;

    ngOnInit() {
        this.route.params
            .switchMap((params: Params) => this.getId(params.id))
            .subscribe((res) => {
                this.loading = false;
                this.paymentRq = res.paramForm;
                console.log(this.paymentRq);
                this.appRef.tick(); // fill the form 
                this.urlForm = this.domSanitizer.bypassSecurityTrustUrl(res.urlPaymentForm);
                console.log('form' + this.urlForm);
                console.log(this.PayForm) // always return undefined !!

            }, error => {
                console.log(error);
            });

    }

ChildComponent.html

 <ng-template >
   <form method="post"  #payForm [action]="urlForm" >
     <input type="hidden" name="version" [ngModel]="paymentRq.version"/>
     <input type="hidden" name="merchantID" [ngModel]="paymentRq.merchantId"/>
     <input type="hidden" name="merchantSiteID" [ngModel]="paymentRq.merchantSiteId"/>
     <input type="hidden" name="paymentOptionRef" [ngModel]="paymentRq.paymentOptionRef"/>
     <input type="hidden" name="orderRef" [ngModel]="paymentRq.orderId"/>
     <input type="hidden" name="orderTag" [ngModel]="paymentRq.orderTag"/>
     <input type="hidden" name="freeText" [ngModel]="paymentRq.freeText"/>
     <input type="hidden" name="decimalPosition" [ngModel]="paymentRq.decimalPosition"/>
     <input type="hidden" name="currency" [ngModel]="paymentRq.currency"/>
     <input type="hidden" name="country" [ngModel]="paymentRq.country"/>
     <input type="hidden" name="invoiceID" [ngModel]="paymentRq.invoiceId"/>
     <input type="hidden" name="customerRef" [ngModel]="paymentRq.customerId"/>
     <input type="hidden" name="date" [ngModel]="paymentRq.date"/>
     <input type="hidden" name="amount" [ngModel]="paymentRq.amount"/>
     <input type="hidden" name="orderRowsAmount" [ngModel]="paymentRq.orderRowsAmount"/>
     <input type="hidden" name="orderFeesAmount" [ngModel]="paymentRq.orderFeesAmount"/>
     <input type="hidden" name="orderDiscountAmount" [ngModel]="paymentRq.orderDiscountAmount"/>
     <input type="hidden" name="orderShippingCost" [ngModel]="paymentRq.orderShippingCost"/>
     <input type="hidden" name="allowCardStorage" [ngModel]="paymentRq.allowCardStorage"/>
     <input type="hidden" name="passwordRequired" [ngModel]="paymentRq.passwordRequired"/>
     <input type="hidden" name="merchantAuthenticateUrl" [ngModel]="paymentRq.merchantAuthenticateUrl"/>
     <input type="hidden" name="storedCardID1" value=""/>
     <input type="hidden" name="storedCardLabel1" value=""/>
     <input type="hidden" name="merchantHomeUrl" [ngModel]="paymentRq.merchantHomeUrl"/>
     <input type="hidden" name="merchantBackUrl" [ngModel]="paymentRq.merchantBackUrl"/>
     <input type="hidden" name="merchantReturnUrl" [ngModel]="paymentRq.merchantReturnUrl"/>
     <input type="hidden" name="merchantNotifyUrl" [ngModel]="paymentRq.merchantNotifyUrl"/>
     <input type="hidden" name="scoringToken" [ngModel]="paymentRq.scoringToken"/>
     <input type="hidden" name="hmac" [ngModel]="paymentRq.hmac"/>

     <button type="submit" ></button>
     </form>
 </ng-template>

Спасибо.

1 Ответ

0 голосов
/ 09 мая 2018

Шаблон не был обработан, удалив "ng-template", я смог заставить его работать. Спасибо @Daniel W Strimpel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...