From my understanding of async pipe, it's a quicker way of subscribing to an observable in fewer lines. However I'm trying to understand in what circumstances would I need to use it over a traditional subscription like my current component below?
import { Component, OnInit } from '@angular/core';
import { HttpService } from "./services/http.service";
import { Main } from "./interfaces/data-interface";
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
  constructor(private httpService: HttpService) {
  }
  mainData: Main;
  itemIndexFocus: number = 0;
  ngOnInit() {
    this.httpService.getFighterDetail()
            .subscribe((res) => {
              this.mainData = res.body;
            });
  }
}
httpservice file:
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from "@angular/common/http";
import { Observable } from 'rxjs';
@Injectable()
export class HttpService {
    constructor(private http: HttpClient) { }
    getFighterDetail(): Observable<any> {
        return this.http.get("/MYAPI", { responseType: 'json', observe: 'response' })
    }
}
It is just a case that I could always use async pipe? If I'm populating a reactiveform with values from an api then I guess my above component's approach would be the more beneficial one.