When you apply template reference variable on component element then by default you will get a component instance.
How to get reference of the component associated with ElementRef in Angular 2
In your case you applied preferences to ion-textarea component. It's TextInput
component that has value
property
https://github.com/ionic-team/ionic/blob/fed4fd95d2545c324c45d891b837e2bcc4ded79d/src/components/input/input.ts#L144
So you should simple do like this:
import { TextInput } from 'ionic-angular';
...
@ViewChild('preferences') m_preferences: TextInput;
addProduct() {
console.log(this.m_preferences.value);
}
I also prepared Stackblitz Example
You can also do it without ViewChild:
<ion-textarea #preferences ...></ion-textarea>
<button (click)="addProduct(preferences.value)">Add product</button>
addProduct(value) {
alert(value)
}
Stackblitz Example
If you deal with angular forms then consider @GreyBeardedGeek answer