The Angels have not confirmed Trout's deal, MLB.com reported.
Trout, 27, was set to become a free agent after the 2020 season when his current six-year, $144.5 million contract ran out, according to MLB.com.
Trout, a first-round draft pick in 2009, batted .312 last season with 39 home runs and 79 RBI. He is a seven-time All-Star and won MVP honors in 2014 and 2016.
Trout's new deal, worth $36 million in average annual value, makes him the highest-paid baseball player on a year-to-year basis, The Washington Post reported. That tops Zack Greinke's $34.4 million average annual value with the Arizona Diamondbacks, the newspaper reported.
Harper's deal with the Phillies averages out to $25 million annually, the Post reported.