Functioning flawlessly on Plunker, yet facing issues on System - Angular 2 Dynamic Form

I've been working on implementing Custom Dynamic Forms in Angular 2, and I successfully added functionalities like Delete and Cancel to the existing Save feature.

After making all the necessary changes in Plunker, I encountered errors when trying to replicate the implementation on my local system.

You can view the working code on Plunker: http://plnkr.co/edit/SL949g1hQQrnRUr1XXqt?p=preview

Here are the error messages I received: https://i.sstatic.net/kwAro.png

The HTML code where the error occurs is:

<div>
  <form [formGroup]="form">

    <div *ngFor="let question of questions" class="form-row">
      <label [attr.for]="question.key">{{question.label}}</label>

  <div [ngSwitch]="question.controlType">

    <input *ngSwitchCase="'textbox'" [formControlName]="question.key"
            [id]="question.key" [type]="question.type" [(ngModel)]="question.value">

    <select [id]="question.key" [(ngModel)]="question.value" *ngSwitchCase="'dropdown'" [formControlName]="question.key" >
      <option *ngFor="let opt of question.options" [ngValue]="opt.key" >{{opt.value}}</option>
    </select>

    <input *ngSwitchCase="'checkbox'"  [(ngModel)]="question.value"
            [id]="question.key" [type]="question.type" (change)="question.value = ck.checked" #ck [ngModelOptions]="{standalone: true}">

  </div> 
  <div class="errorMessage" *ngIf="!form.controls[question.key].valid">{{question.label}} is required</div>
    </div>

    <div class="form-row">
      <button type="submit" [disabled]="!form.valid" (click)="onSubmit()">Save</button>
      <button type="button" class="btn btn-default" (click)="cancel()">Cancel</button>
      <button type="button" class="btn btn-default" (click)="clear()">Clear</button>

    </div>
  </form>

  <div *ngIf="payLoad" class="form-row">
    <strong>Saved the following values</strong><br>{{payLoad}}
  </div>
</div>

Answer №1

To address the issue, I followed the Dynamic Forms tutorial and included a moduleId in each component. For example:

 @Component({
        selector: 'dynamic-form',
        templateUrl: 'app/component/dynamic-form/dynamic-form.component.html',
        providers: [QuestionControlService],
        moduleId: 'dynamic-form'
    })

An obstacle arose when transitioning to angular2 rc5 in production as the bundled JavaScript failed to inject dependencies correctly. One suggested solution was rearranging the order of components in the NgModule's declarations array; however, simply adding the moduleId parameter resolved the issue for my scenario.

declarations: [DynamicFormQuestionComponent, DynamicFormComponent, AppComponent]

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Ways to send a variable to ngIf

header.component.html <ng-container *ngFor="let headerMenu of headerMenus"> <li *ngIf="headerMenu.ngif"> <a (click)="onClick(headerMenu.menu)" [class]="headerMenu.menu"> <img [src]="headerMenu.src" [alt]="heade ...

When utilizing Ionic components in Angular, you may encounter the error message "element not recognized."

I have recently developed an app using Ionic and Angular, but I am encountering a persistent error. Whether I place the HTML code in the default Ionic generated "pages" folder or in a custom page, the error persists. Ionic version 5.4.16 Angular version 1 ...

Developing Angular 2 custom async validators for use in reactive forms

I am currently working on a reactive form that requires unique form controls: this.form = new FormGroup({ name: new FormControl(this.initialValue, [ Validators.required, ], this._uniqueNameValidator.bind(this)), }); To achieve this, I have create ...

What is the best way to ensure that the second http call only runs after the first http call has completed, and passing an argument retrieved from the first call to the

My current challenge involves hitting one API to retrieve a specific string, storing it in a variable, and then passing it to another HTTP API call. However, I'm encountering an issue where the API call requiring the argument executes but never sends ...

Tips for preventing microphone from muting when the screen is locked in an Angular PWA during voice calls

After successfully implementing a PWA in Angular with agora.io voice calling, I encountered an issue where the microphone would get muted on both iOS and Android devices when the phone was locked. Even after unlocking the phone, the microphone remained mut ...

Can Typescript automatically determine the return type based on the function argument value?

How can Typescript be utilized to deduce the return type from the valueType parameter instead of using overloads? type ValueType = 'integer' | 'string' | 'number' | 'date' | 'dateTime' | 'boolean&apos ...

Encountered a syntax issue within the library code while integrating Material Design with Rails, Webpacker, Typescript, and Angular

I am facing a syntax error in my Rails application, specifically in a large JS file that seems to be generated by webpacker. The error appears to be related to Angular/Material code. Interestingly, when I exclude material design, the error disappears. Here ...

Extending Interfaces Using Keys from an Array in Typescript

When dealing with a scenario where you want a pointfree omit, you can achieve this: type PlainObject<T> = {[key: string]: T} const omit = <K extends string>( name: K ) => <T, U extends PlainObject<T> & { [P in K]: T }>( ...

Dynamically Generated URL Templates in Ionic 3

I am in the process of re-developing an app in Ionic that was originally built in ionic-v1 about a year ago. The app has multiple template types for users to choose from, and I want to create a dynamic component that loads its templateURL based on the user ...

Angular: Deciding Between Utilizing Boolean @Input and Attribute @Directive - What's the Best Approach?

My goal with Angular is to create a "directive" that can add functionality to my component, specifically adding a myPortlet with a close button when using the directive myHasCloseButton. <myPortlet myHasCloseButton>...</myPortlet> In explori ...

Exploring the differences: Async await, Promises, and Mapping

When faced with the decision between promises, async awaits, and mapping operators like concatMap, how do you determine which one to use? Specifically, I am working on a scenario where I need to make an http call to my backend, followed by another http ca ...

Angular 14 - Issue with passing values through props - Error: Uncaught (in promise): InvalidCharacterError occurs when attempting to set attribute with 'setAttribute' method

I am a beginner with Angular and encountering an issue when trying to pass props from a parent component to a child component. The specific error I am facing is related to an invalid attribute name while using Angular version 14.2.5. core.mjs:7635 ERROR ...

Angular - Binding not displaying the latest list elements

In my small application, I have two buttons that either add 1 or -1 to a list. The sum of the list is also displayed. However, I am facing an issue with the interpolation as only the default values of the list are being displayed instead of the newly adde ...

Showing Nested Numerical Objects Post RequestBeing Made

Currently, I am facing an issue with accessing nested objects referred to by numbers. After making a service call to retrieve a JSON object, I mapped each field to another object which will be used for displaying the fields in HTML. The problem arises whe ...

Sending a XML file from a Vue application to an ASP.NET Core backend using axios

I'm encountering difficulties when trying to upload an xml file using axios to my asp .net server. Below is the code snippet I am using on the vue side to retrieve and upload the xml file: uploadXmlFile(file: any) { const rawFile = new XMLHttpRequ ...

Arrange the columns in Angular Material Table in various directions

Is there a way to sort all columns in an Angular material table by descending order, while keeping the active column sorted in ascending order? I have been trying to achieve this using the code below: @ViewChild(MatSort) sort: MatSort; <table matSort ...

Guide to aligning a fraction in the center of a percentage on a Materal Design progress bar

Greetings! My objective is to create a material progress bar with the fraction displayed at the top of the percentage. https://i.sstatic.net/GbphJ.png Currently, I have managed to show the fraction at the beginning of the percentage. Below is the code sn ...

Angular - Struggling to locate a specific value within an array

Hey everyone, I'm currently struggling with using the find method for arrays. Here is the code snippet: I'm facing an issue with the code on line 80, while a similar function on line 69 is working fine. Error message: ERROR TypeError: Cannot r ...

Tips for setting up a proxy with an enum

I am facing an issue with setting up a Proxy for an enum. Specifically, I have an enum where I want to assign a value to this.status using a Proxy. However, despite my expectations, the output "I have been set" does not appear in the console. Can anyone ex ...

How can we retrieve the user ID in Node.js MySql so that it can be utilized in subsequent queries post login?

I am currently in the process of developing a web application using node.js and MySQL as my database. I have configured a login system, but I am unsure about how to determine what information should be displayed on certain pages based on user data. In ad ...