In your HTML you are printing the whole company object instead of only company name.
Replace this
{{ company }}
with this
{{ company?.name }}
EDIT: As I read one of your comment that you tried above solution already then here is the updated answer.
P.S: The issue was a wrong company name i.e 2. name instead of just name, however rather than going with those weird names I would parse and create a new array of object with more readable field names.
// Declare companies variable as Observable
searchedCompanies$: Observable<any>;
getCompany(value: any) {
// Do not subscribe here but return the Observable response
this.searchedCompanies$ = this.searchCompanyService.searchCompanies(value)
.pipe(map((result) => result.bestMatches.map(company => ({
symble: company['2. symble'],
name: company['2. name'],
type: company['3. type'],
region: company['4. region']
...
})
)))
and in template subscribe the Observable by async pipe
Use async pipe to subscribe and read the data
<mat-option *ngFor="let company of searchedCompanies$ | async"
{{company?.name}}
</mat-option>