"Utilizing the autocomplete feature in Angular 2 with datalist for

const availableBooks: Array<{ id: number, title: string }> = [{id: 1, title: "book1"}, {id: 2, title: "book2"}, {id: 3, title: "book3"}, {id: 4, title: "book4"}];

<form [formGroup]="bookForm" novalidate (ngSubmit)="save(bookForm)">
    <div class="form-group">
        <label>Select Book</label>
        <input list="book_list" formControlName="book_id">
        <datalist id="book_list">
            <option *ngFor="let book of availableBooks" [ngValue]="book.id">{{book.title}}</option>
        </datalist>{{ bookForm.value | json }}
        <!--display error message if book_id is not valid-->
        <small [hidden]="bookForm.controls.book_id.valid">
          Please select a book</small>
    </div>
</form>

I am working on an autocomplete input field using datalist in Angular 2. I want to search by book title and retrieve the book ID once a book is selected.

  1. Currently, I am only getting the book title instead of the book ID.
  2. How can I map the book title to its corresponding ID in the input box when the form is in edit mode?

Answer №1

It is important that you use [value] instead of [ngvalue]

To extract in the component, follow this pattern:

submit(form) {
    console.log(form.book_id.value);
}

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

Animate jQuery Images - Transform and smoothly reveal element

Hey there! I've managed to create a color switcher that gives a sneak peek of different themes. Currently, it simply switches the image source and loads the new image. But I'm curious if it's possible to add a fadeIn effect to enhance the t ...

Merging Vue props with v-for for powerful data handling

Below is an example of my child component HTML: <div v-for="(input, index) in form.inputs" :key="index"> <div> <input :name"input.name" :type="input.type" /> </div> </div> JavaScript (Vue): <script> export d ...

Guide on importing a Vue 3 component dynamically

As mentioned in this informative article, I am looking to dynamically import a component to view in my Vue 3 application. Here is the snippet of code from the view: <template> <div class="page"> <latest-box v-if="showL ...

Is it possible to include an onclick event in a hyperlink tag to initiate an ajax call

I am looking to incorporate an ajax call within a hyperlink tag "a". The purpose of this ajax call is to send some information to the server without expecting any return value. I attempted the following approach: document.querySelector("#myId").onclic ...

Select a hyperlink to access the corresponding tab

I've been playing around with bootstrap and AngularJS. I placed nav-tabs inside a modal-window and have it open when clicking on a link. However, I want the appropriate tab to open directly upon click. For example, if I click on "travel", I want the t ...

What is the best way to apply a CSS class to a ComponentRef that has been generated in Angular 5

I am attempting to dynamically add a CSS class to a component right after its creation by utilizing ViewContainerRef and ComponentFactoryResolver. My goal is to determine the class based on which other Components have already been added to myViewContainerR ...

Verify if a request attribute has been established using jQuery

How can I determine if an attribute is present in a request object? I have specific error scenarios where an error message needs to be sent to the client side: Here is the servlet code snippet: request.setAttribute("error", "The following term was not fo ...

React Redux fails to dispatch an action

Recently, I attempted to integrate Redux into my React application. I created a container called SignIn that instantiates a mapDispatchToProps and connects it to the component. The SignIn component renders a sub-component called SignInForm (code provided ...

What is the best way to display a template from a directory that does not include express.static files?

Here is my loginController: var User = require('./../models/User.js'); var loginController = {}; loginController.match = function(req, res){ var username = req.body.username; var password = req.body.password; User.findOne({user ...

Tips for ensuring synchronous state changes in React

I am working on a currency calculator using react.js I am fetching the latest exchange rates and storing them in state using the getRates function: getRates(currencyShortcut){ fetch('https://api.fixer.io/latest?base='+currencyShortcut) ...

Can the ThreeJS element be seen?

I am facing a challenge in my ThreeJS application where the view automatically centers on an object if it is close to the center of the view and closer than a specified distance. While I have information about the latitude and longitude of all objects and ...

React Hook for modifying a value within an array of objects in real-time

Is there a way to update the score of each player with a simple click? I have already implemented the initial code and all that's left is to define the function that will trigger the score update for each user. The increment value is +1. const [p ...

The message I received from my Angular 7 application is indicating that 'The specified selector does not correspond to any elements in the document.'

Using Angular 7 and I've implemented a custom component located at src/app/organization/organization.component.ts import { Component, OnInit } from '@angular/core'; import {FormGroup, FormBuilder, Validators} from "@angular/forms"; @Compo ...

Accessing and sending only the body part of an HTTP response in Angular 7 test cases: A comprehensive guide

Currently, I am working on creating unit test cases in Angular 7 for a Component that utilizes an asynchronous service. This is the content of my component file: submitLoginForm() { if (this.loginForm.valid) { // send a http request to save t ...

Altering various HTML components with every swipe of SwiperJS

I am new to working with JavaScript and I have integrated a Swiper JS element into my HTML page. Here is the current code I am using: <head> <link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css&quo ...

Tips for using jQuery to add several image source URLs to an array

My JavaScript code uses jQuery to collect all image sources on document load and store them in an array: var sliderImg = []; sliderImg.push($('.thumbnail').children('img').attr('src')); Then, I have a click event set up to a ...

Are HTML's Regular Expressions the Equivalent of JavaScript's Regular Expressions?

I have been trying to utilize the pattern="" attribute in HTML to implement regex, but unfortunately, I am unable to locate a comprehensive list of HTML regex parameters. This has led me to ponder whether the syntax for regex in HTML is similar to JavaSc ...

What is causing my switch statement to not align with any cases?

Whenever I implement a switch statement, none of the cases seem to match the 'prefix' value. However, when I switch to using an if-else statement instead, everything functions correctly. What could be causing this discrepancy? Thanks in advance ...

The Ajax request is failing to execute properly on newly appended elements

My comment system allows users to post comments which are then appended to the existing ones. Whenever a user hovers over a comment, a 'delete' button appears. Clicking on the delete button prompts a confirm dialog and upon confirmation, an ajax ...

Converting Dates with Ractive.js

Is there a way to transform the Epoch time value retrieved from a JSON endpoint into a readable time string format such as "Tue 19 Jan 11:14:07 SGT 2038" without relying on external libraries like moment.js? var ractive = new Ractive({ el: '#cont ...