Financial terms were not released by the Angels, but CBSSports.com reported the deal with the two-time All-Star outfielder is worth $144.5 million.
Last month, the Angels signed Trout to a one-year contract worth $1 million, widely seen at the time as a prelude to a much bigger deal in the future.
It was the largest pre-arbitration contract for a player, surpassing a record shared by Ryan Howard, who got $900,000 from the Philadelphia Phillies in 2007, and Albert Pujols, who got the same amount from the St. Louis Cardinals in '03.
The Angels renewed Trout's contract last year for $510,000 -- just $20,000 above the major league minimum at the time.
Trout is one of only four players to bat .320 with 50 homers and 200 runs scored in his first two full seasons. The others: Ted Williams, Joe DiMaggio and Pujols, now a teammate of Trout's with the Angels.
Called up a month into the 2012 season, Trout won the AL Rookie of the Year Award after hitting .326 with 30 homers and 83 RBIs. He followed that with 27 homers, 97 RBIs and a .323 batting average in 2013.
The Associated Press contributed to this report.