This seems like an excellent deal for both sides.
Trout is obviously now set for life - should he suffer a catastrophic injury, he will still have no financial worries. It makes perfect sense to take the guarentee of $144 million as opposed to possibly making considerably more going year to year and hitting free agency after '17. (At the end of the upcoming season, Trout will have made around $3.3 million in his career, which is a lot of money, but not set for life money.)
From the Angels's perspective, this will protect them from losing Trout after 2017. The will have the best player in baseball under contract for seven of his prime years.
If Trout continues his current career path, and salaries continue to rise like they have been, those three years of free agency could be worth up to $120 million (plus having to pay for all of the years beyond those three in a contract signed in 2017.)
Furthermore, given the Angels just signed Trout for $1 million for this year; In a sense this is a 7 year / 145.5 million deal.