user3753693
user3753693

Reputation: 245

angular 8 Error: Unexpected value 'HttpClient' imported by the module 'AppModule'. Please add a @NgModule annotation

I am at a complete loss on why I am getting this error. I have spent 10 plus hours looking at angular tutorials and stack overflow questions. Everything in my head says its something small but i am almost at a breaking point. please guide me in the right direction.

app.module.ts

import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { UploadComponent } from './upload/upload.component';
import {  FormsModule,  ReactiveFormsModule } from '@angular/forms';
import { HttpClientModule, HttpClient } from '@angular/common/http';


@NgModule({
  declarations: [
    AppComponent,
    UploadComponent
  ],
  imports: [
    BrowserModule,
   FormsModule,
    ReactiveFormsModule,
    HttpClientModule,
     HttpClient
  ],
  providers: [],
  bootstrap: [AppComponent, UploadComponent]
})
export class AppModule { }

uploadcomponent.ts

import { FormBuilder, ReactiveFormsModule, FormGroup, FormControl } from '@angular/forms';
import { HttpClientModule, HttpClient } from '@angular/common/http';

@Component({
  selector: 'app-upload',
  templateUrl: './upload.component.html',
  styleUrls: ['./upload.component.scss']
})

export class UploadComponent implements OnInit {

    SERVER_URL = 'http://localhost:3000/upload';
    uploadForm: FormGroup;

  constructor(private formBuilder: FormBuilder, private httpClient: HttpClient) { }

  ngOnInit() {
    this.uploadForm = this.formBuilder.group({
      profile: ['']
    });
  }

  onFileSelect(event) {
    if (event.target.files.length > 0) {
      const file = event.target.files[0];
      this.uploadForm.get('profile').setValue(file);
    }
  }

  onSubmit() {
    const formData = new FormData();
    formData.append('file', this.uploadForm.get('profile').value);

    this.httpClient.post<any>(this.SERVER_URL, formData).subscribe(
      (res) => console.log(res),
      (err) => console.log(err)
    );
  }

}

uploadcomponent.html

    <form [formGroup] = "uploadForm" (ngSubmit)="onSubmit()">
      <div>
        <input type="file" name="profile" (change)="onFileSelect($event)" />
      </div>
      <div>
        <button type="submit">Upload</button>
      </div>
     </form>
  </div>```

Upvotes: 2

Views: 604

Answers (1)

Sajeetharan
Sajeetharan

Reputation: 222582

You already have HttpClientModule which is required, you need to remove HttpClient under imports,

imports: [
    BrowserModule,
    FormsModule,
    ReactiveFormsModule,
    HttpClientModule,
    HttpClient // remove this
 ]

Upvotes: 3

Related Questions